質問

Javacでデバッグ情報の生成を有効にすると、クラスファイルは20〜25%大きくなります。これは、Javaプログラムの実行にパフォーマンス上の影響を与えますか? 「はい」の場合、どの条件およびいくつ。ファイルのサイズは大きくなりますが、最小限に抑える必要があるため、クラスのロードには少し影響が出ると思います。

役に立ちましたか?

解決

どの言語でも、デバッグ情報はメタ情報です。その性質上、オブジェクトファイルのサイズが大きくなるため、読み込み時間が長くなります。デバッガの外部で実行中、この情報は実際には完全に無視されます。 (明確ではありませんが) JVM仕様で概説されているとおりデバッグ情報はバイトコードストリームの外部に保存されます。つまり、実行時にクラスファイルに違いはありません。確認したい場合は、試してみてください:-)。

多くの場合、デバッグには最適化をオフにする価値があります。これはパフォーマンスに影響を及ぼします

他のヒント

デバッグのみをオフにしても、違いはありません。ただし、デバッグを無効にして最適化を有効にすると、コンパイル時に静的な最適化が行われるため、違いがわかります。これにより、ホットスポットに最適化されたコードでさえ、実行時に高速になります。

しかし、これまでのところ、完全なスタックトレースを意味するか、ユーザーのパフォーマンスを向上させるかというトレードオフの関係で、私は常にスタックトレースに投票しました。結局、ユーザーはより速いマシンを得るために毎年1000ドルを費やすことを望んでいますが、問題を解決するために意味のあるエラーメッセージをあなたに与えるために15分を費やすことをいとわないでしょう。

数年後、私はユーザーの1000ドルよりも15分間高く評価します。 :)

JDK1.3 javacは最適化フラグを無視するため、「コンパイル時の最適化は不要です」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top