2

数か月前にセットアップ全体を Java 1.5 から 1.6 (J2EE、Tomcat) に移行した後、Maven がまだ Sun の javac パラメータ「-target 1.5」を介して 1.5 を対象とするクラス ファイルを生成するように構成されていることに気付きました。「-target 1.5」を「-target 1.6」に変更すると、パフォーマンスが向上しますか?

4

3 に答える 3

5

それほど大きな違いはないはずです。1.6ファイルは、バイトコード検証速度を向上させるスタックマップ/テーブル構造を持つことができます(Apache Harmonyはよりスマートなアルゴリズムを使用するだけです)。

1.4に移行した場合、クラス定数の初期ロードは少し遅くなりますが、クラスのロードにかかる時間を考えると、それは関係ありません(新しい形式のldcバイトコードが置き換えられますClass.forNameが、結果は静的フィールドに格納されます)。

一般的に、それは問題ではありません。ランタイムコンパイラは重要なビットであり、ほとんど同じマシンコードを生成できます。過去には、実行時コンパイラのコードを壊さないように最適化を減らすためにjavacが作成されていましたが、これは-targetフラグとは無関係です。

于 2009-07-08T09:12:49.600 に答える
5

Java 1.6 は、バイトコード検証のプロセスを簡素化する別の class-file-formatを使用します。したがって、新しいクラス ファイル形式を使用すると、起動時間が少し改善されるはずです。

于 2009-07-08T09:17:15.893 に答える
1

なぜパフォーマンスに違いがあるのか​​わかりません。1.5と1.6のクラス形式に大きな違いはありません。他に何も変更がない場合、ターゲットを指定すると、生成されたクラスのクラスバージョンIDが変更されます。

于 2009-07-08T09:09:08.063 に答える