/
最近
.rdf
追記
編集
設定
本棚
翌日へ
前日へ
脳log
[20140218]
2014年02月18日 (火)
Javaの String実装変更の話。「
Oracle Tunes Java's Internal String Representation
」■Javaは使わないけど自分が JavaScriptの Stringに期待してるのは最初の実装だ。immutableな Stringだからできる、文字配列を共有するインスタントな substring.■それだと大元の巨大な文字配列を小さい Stringが参照し続けることでメモリが解放されないから、小さい String切り出しをまずはコピーに変更した。そして今度は文字バッファの共有を完全にやめたと。■C++の最近の規格では std::stringを CoWで実装するのが禁止されたとか。それでなくても CoWにはもうパフォーマンスメリットがないとは言われてる。■JavaScriptはどうなんだろ。正規表現のマッチングごとにマッチの全体、キャプチャグループと同数の(※スタックはしない)部分マッチ、マッチの左にある入力文字列、マッチの右にある入力文字列がアクセス可能になるんだけど、文字配列をコピーすることは想定してない仕様だよね。Javaもそうだったはずで、パフォーマンス特性を変えさせるほどメリットが大きいのか、単に過去でなく現在・未来を見てるだけなのか。■■■@2014-06-23 Javaではなく Scalaのライブラリではあるが悪影響の例。「
ScalaのRegexParsersがすごく遅くなる件の原因と対策 - Qiita
」■■■@2014-09-13 Java 8 Update 20で導入されたという String Deduplicationのこと。「
Java8u20で文字列のメモリ効率が向上 - R42日記
」
翌日へ
前日へ