61

Javacを使用してデバッグ情報の生成をオンにすると、クラスファイルは20〜25%大きくなります。これは、Javaプログラムの実行にパフォーマンスの影響を及ぼしますか?はいの場合、どの条件と数で。ファイルが大きいため、クラスのロードに少し影響があると思いますが、これは最小限に抑える必要があります。

4

3 に答える 3

63

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

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

于 2008-10-20T12:03:36.520 に答える
15

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

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

数年後、ユーザーの 1000 ドルよりも自分の 15 分間を高く評価するようになりました。:)

于 2008-10-22T00:58:39.967 に答える
8

JDK1.3 javac は最適化フラグを無視するため、「コンパイル時の最適化は不要」であることに注意してください。

于 2009-01-25T11:07:49.253 に答える