痛い最適化

http://d.hatena.ne.jp/lethevert/20060704/p2
http://d.hatena.ne.jp/lethevert/20060704/p3
http://d.hatena.ne.jp/lethevert/20060703/p2

  • class, methodをfinal指定(ないしprivateメソッド化)する -> メソッド呼び出しの効率化
  • クラス階層をObject直下におく -> 初期化処理の効率化

どっちもほとんど無意味です.お奨めしません.*1
なおfinalにできるメソッドをfinalにするのは良い習慣です.

あと、「インターフェースを実装しない -> 初期化処理の効率化」も考えましたが、これもクラスで共有できるので、同じ。

インターフェースメソッド呼び出しは若干遅くなる恐れはあります.でも普通に使う分には問題なし.

finalで最適化はされるが、finalでなければ最適化されないわけではないということだと思います。

YES.だから「最適化のためにfinalを付ける」というのは間違い.付けてなくても普通に最適化される.

関連:

Javaパフォーマンスチューニング 第2版

Javaパフォーマンスチューニング 第2版

http://d.hatena.ne.jp/JavaBlack/20060629#p1
https://developers.sun.com/learning/javaoneonline/2005/coreplatform/TS-3268.pdf
http://www-06.ibm.com/jp/developerworks/java/030627/j_j-jtp04223.html

*1:こういう「最適化」は10年くらい前に流行ったが,その後JITやHotSpotVMの普及と共に時代遅れとなり,今では完全に廃れてしまった.