/ 最近 .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日記