Java で関数の実行時間を取得する必要があります。私は使用できる 2 つの方法を認識しています:
currentTimeMillis();
とnanoTime();
しかしcurrentTimeMillis();
、壁時計の時間が必要な場合 (つまり、壁時計から実行にかかった時間を測定しているかのように) がより正確であることを学びました。処理ではありません。時間)。
しかしcurrentTimeMillis();
、私に小さな分数を与えることはできません。たとえば、実行時間が 1 ミリ秒未満の場合は 0 を返します。1 未満の時間でも、たとえば 0.05 ミリ秒が必要です。これは、メソッドが 0 を返す場合の簡単な例です。
long startTime=System.currentTimeMillis();
for(int x=0; x<10;x++)
{
System.out.println("-");
}
long execTime=System.currentTimeMillis() - startTime;
時刻を返しても、30 か 40 として返されます。しかし、もっと正確な数値、たとえば 30.00012 が必要です。また、メソッドの戻り値の型は浮動小数点数が欲しいのでlong
変更しましたdouble
が、これに害はありますか? Java メソッドの実行ウォールクロック時間を小さい分数 (8.0 ではなく 8.287335 など) で測定できる適切な方法を教えてください。