8

私はAndroidウィジェットを使用していて、System.nanoTime()を2回呼び出す間の経過時間をチェックしていますが、その数は膨大です。これで経過時間をどのように測定しますか?それは一瞬の断片であり、代わりにそれ以上のものでなければなりません。ありがとう

4

3 に答える 3

20

System.nanoTime()は、粒度がナノ秒の時間値を返します。つまり、 javadocで説明されているように、 10〜9秒です。それに対する2つの呼び出しの差は、1秒のかなりの部分であり、大きな数になるはずです。System.nanoTime()


より細かい粒度の時間測定が必要な場合は、System.currentTimeMillis()...を検討するか、アプリケーションに合わせてナノ秒の値を10の適切な累乗で除算してください。

Androidプラットフォームには、時間のさまざまな「測定値」をサポートする3つの異なるシステム時計があることに注意してください。を参照してくださいSystemClock。Androidプラットフォーム用に明示的にプログラミングしている場合は、javadocを読んで、実行していることに最も適切な方法を決定する必要があります。


参考までに、「nano-」は国際単位系(SI)で定義されている標準プレフィックスの1つです。http://physics.nist.gov/cuu/Units/prefixes.htmlを参照してください。

「彼ら」が間違っていて、「ナノ-」が小さすぎると本当に思っているなら、いつでもNISTに手紙を書くことができます。私は誰かがそれを感謝すると確信しています...:-)

于 2011-02-17T00:17:07.783 に答える
9

1秒には1,000,000,000ナノ秒が含まれているため、数値がその範囲内にある限り、それは妥当です。

于 2011-02-16T23:57:54.773 に答える
1

分数形式にしたい場合は、value/ 10^9を取ります。ここでsのvalue差はどこにありますか。nanoTime()

long nanoSeconds = 500000000;
float seconds = nanoSeconds / 1000000000;

Log.i("NanoTime", nanoSeconds + " ns is the same as " + seconds + " seconds");

出力は次のようになります。

07-27 11:35:47.196: INFO/NanoTime(14237): 500000000 ns is the same as 0.5 seconds
于 2011-07-27T16:38:48.267 に答える