Java絡みで覚えておきたいことがでたので久々に更新してみようかな、と。
Java7の備忘録ということで。
Map操作パフォーマンス向上のために、Stringのハッシュ計算に新しいロジックが入ったらしい。
ただ、現在その設定はデフォルト無効になっている。
次のシステムプロパティの値でコントロールする。
jdk.map.althashing.threshold
値の意味は、新しいロジックを使いはじめるMapのキャパシティなんだそうな。
-1が無効で、0にしたら常に使うし、512にしたらエントリが512を超えたら使う。
基本的にエントリが多くなった時の、ハッシュの衝突を避けるという目的があるらしいので
エントリ数が大きいMapを使っている時に有効な改善が入っているらしい。
使い道を考えたけど、文字列IDをキーにしてオブジェクトをキャッシュするようなキャッシュ的な用途で効くのかな、と。
注意点としては、ハッシュの値が変わるのでイテレータの列挙順序が変わるとのこと(順序を保証しないクラスは)。
順序に依存したコードなんてそもそも書いちゃダメだけど気をつけろ、と。
体感することはないと思うけど、しばらく有効にして使ってみるつもり。
コメントを残す