谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

Day-5 : Java Unleashed: Java Virtual Machine Tuning from the Pros

複数のJVMの長所から、パフォーマンスチューニングを検討するという
難しいセッション、、、かと思ったら、
普通のパフォーマンス問題の対応方法を説明するセッションでした。


トラブルシュート時の鉄則のようなお話でしたが、
まとめると、以下の通り。


1. パフォーマンス問題が起きたら、手当り次第に修正したり、パラメータを
いじるのではなく、きちんと計測と問題分析を行うこと。


2. パフォーマンス問題のボトルネックと、取りうる手段を明確にすること。


3. 修正は1回につき、1箇所だけにすること。修正後は、同じ方法で計測すること。


という所。
私も普段、新人とかに教えていることですね。


また、具体例として、パフォーマンス問題が起きたソースコードを見せて、
「このコードの何が悪いだろうか?」というのを問いかけていました。


会場からは「文字列を += で結合している!」とか
正規表現コンパイルを毎回やっている!」なんて声が上がりましたが
正解は「FileInputStream#available」を何度も呼んでいることでした。


きちんと計測して、プロファイリングすれば、ここが遅いことが分かりますが、
ソースコードだけを見ると、(会場からの声のように)分かりやすいところに
飛びついてしまう、というお話でした。