J2SE 5.0 Performance White Paper

kyukaのところで紹介されていたが,結構興味深い.

http://java.sun.com/performance/reference/whitepapers/5.0_performance.html

StringBuilderに関しては,JSR-51のNIOの議論の時にも,synchronized宣言は何の役にも立たない(StringBufferで同期が必要な時には,ほとんどすべてが複数のメソッド実行を含むあるコード領域全体に対しておこなう必要があるからだ)と私が発言した時に,Mark Reinhold(JSR-51のSpec. Leadで,現J2SEのChif Engineer)が強く同意してくれた.JSR-204の議論の時に,Brian BeckからついにStringBuilderが入ることを知らされた時には,大喜びしたのを思い出す.もしStringBufferを操作している部分がホットスポットになっていたら,StringBuilderへの変更は有効だと思う.

あとClass Data Sharing(1.4の段階でもApple Computerは実装)や,GCのErgonomics(領域の自動調節,1.4の段階でもBEA SystemsのJRockitで同様の機能が実装)など,悩みの種だった問題が解決されてくるのは嬉しい(と言っても,今はシビアなチューニングはやってはいないのだけど).

GCもTrainアルゴリズムは結局将来的に廃止されるようだし,さまざまな状況に対応するための選択肢が用意されてきている.ただ,その分,どれを使うかの判断はしっかりする必要があるが.

本当は忙しいのに,関連ドキュメントを含めてじっくり読んでしまった.昔と比べると雲泥の差だよなあ.