質問はそれをすべて言います。ヒットはそれほど重要ではありませんが(1.5倍から2倍遅いと測定しました)、try-catchを使用したバイトコードと使用しないバイトコードに違いはありません。では、一般的に遅くなる理由は何ですか?
Pl。問題は、例外をスローするオーバーヘッドではなく、tryブロックに出入りすることに関するものであることに注意してください。
編集:ここにコードがあります(ホットスポット1.6.0_31サーバーで実行)
static void tryCatch()
{
int i = 0;
long l1 = getTime();
for(int j = 0; j < 100000; j++)
{
try
{
i++;
}
catch(Exception e)
{
}
}
long l2 = getTime();
System.out.println("with try-catch: " + (l2 - l1) + ": " + i);
}
static void noTryCatch()
{
int i = 0;
long l1 = getTime();
for(int j = 0; j < 100000; j++)
{
i++;
}
long l2 = getTime();
System.out.println("w/o try-catch: " + (l2 - l1) + ": " + i);
}
static long getTime()
{
return System.nanoTime();
}