Javacでデバッグ情報の生成をオンに切り替えると、クラスファイルが20〜25%大きくなります。 Javaプログラムの実行にパフォーマンス上の影響がありますか?はいの場合、どの条件と数で実行されますか?ファイルが大きいため、クラスのロードに少し影響があると予想されますが、これは最小限でなければなりません。
どの言語でも、デバッグ情報はメタ情報です。その性質上、オブジェクトファイルのサイズが大きくなるため、ロード時間が長くなります。デバッガーの外部での実行中、この情報は実際には完全に無視されます。 JVM仕様 に(明確ではありませんが)概説されているように、デバッグ情報はバイトコードストリームの外部に格納されます。つまり、実行時にクラスファイルに違いはありません。確かにしたいなら、試してみてください:-)。
Ps。多くの場合、デバッグでは、最適化をオフにすることの価値があります。それdoesはパフォーマンスに影響を与えます。
デバッグのみをオフにしても、違いはありません。ただし、デバッグをオフにして最適化をオンにすると、コンパイル時に静的な最適化が行われるため、違いがわかります。このようにして、ホットスポットに最適化されたコードでさえ、実行時に高速になります。
しかし、これまでのところ、完全なスタックトレースを取得することと、ユーザーパフォーマンスを向上させることのトレードオフとして、常にスタックトレースに投票しました。結局のところ、ユーザーはより高速なマシンを入手するために毎年1000ドルを費やすことをいとわないが、問題を解決するために意味のあるエラーメッセージを提供するために15分を費やすことを望んでいません。
数年後、私はユーザーの1000ドルよりも自分の15分の価値を高く評価するつもりです。 :)
JDK1.3 javacは最適化フラグを無視するため、「コンパイル時の最適化は不要」であることに注意してください。