13

リクエストの長さを監視するフィルターを作成しました。

long start = System.nanoTime();

...

long end = System.nanoTime();

これからミリ秒数を取得するにはどうすればよいですか?

4

6 に答える 6

47
(end - start) / 1000000

1 マイクロ秒 = 1000 ナノ秒

1 ミリ秒 = 1000 マイクロ秒

結果は切り捨てられますが、通常、真のナノ秒の精度は得られないことに注意してください (精度は OS によって異なります)。Javadoc からnanoTime():

この方法はナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。

于 2010-09-06T23:39:18.807 に答える
2

それらを減算して、結果を10 ^ 6で割るだけです。

1 ナノ秒は 10^-9 秒で、10^-6 ミリ秒です。
http://en.wikipedia.org/wiki/Nano-

于 2010-09-06T23:38:01.203 に答える
1

意味のある結果を得るには:

void procedure ( ... )
{
     ...
}

double measureProcedure ( double epsilon , ... )
{
    double mean ;
    double stderr = 2 * epsilon ;
    while ( stderr > epsilon )
    {
         long start = System.nanoTime();
         procedure ( ... ) ;
         long end = System.nanoTime();
         // recalculate mean , stderr 
    }
    return ( mean / 1000000 ) ;
}
于 2010-09-07T01:35:00.577 に答える
0

あなたはただ使うことができますSystem.currentTimeMillis()

警告:

戻り値の時間単位はミリ秒ですが、値の粒度は基盤となるオペレーティング システムに依存し、それよりも大きい場合があることに注意してください。たとえば、多くのオペレーティング システムでは、時間を数十ミリ秒単位で測定します。

于 2010-09-06T23:50:33.293 に答える