5

ランダムにタイマーを削除するのを忘れたときに、ナノ秒タイマーで囲んだいくつかのアルゴリズムをテストしていたところ、次のコードが見つかりました。

    a = System.nanoTime();
    System.out.println(System.nanoTime() - a);

私のシステムでは常に4400ナノ秒を出力します。これは 4.4 マイクロ秒になりますが、このコードは次のとおりです。

    a = System.currentTimeMillis();
    for (int i = 0; i < 1000; i++)
        System.nanoTime();
    System.out.println(System.currentTimeMillis() - a);

プリント 0

4

2 に答える 2

4

4400ナノ秒は4.4マイクロ秒、つまり0.0044ミリ秒です。2番目の例では、経過時間が1ミリ秒よりはるかに短いため、常にゼロが出力されます。次に、使用される2つのタイマーの違いがあります。 currentTimeMillisクロックスキューを調整できますが、調整nanoTimeできませんが、ここで機能しているとは思えません。

于 2012-08-10T03:38:10.933 に答える