finalをつけたらパフォーマンスが落ちたでござるの巻

山岳信仰の盛んだった日本では山奥の開発現場など、まだまだfinal信仰が盛んなわけですが、先ほどのコードにfinalを付けてみました。

	public static void main(String[] args) {
		final int NUM = 31;
		long start = System.currentTimeMillis();
		for (int i = 0; i < Integer.MAX_VALUE; i++) {
			int hash = 17;
			hash = hash * NUM + i;
			hash = hash * NUM + i;
			hash = hash * NUM + i;
			hash = hash * NUM + i;
			hash = hash * NUM + i;
		}
		System.out.println(System.currentTimeMillis() - start);
	}

NUMはhashでかける時の定数なのでfinalで再代入できないようにしてパフォーマンスアップだぜ!とか考えたとしましょう。

VM final無 final有
Java5.0 u17 11,328 14,047
Java6 u12 6,437 9,109

finalの効果バッチリですね!