私はAndroidウィジェットを使用していて、System.nanoTime()を2回呼び出す間の経過時間をチェックしていますが、その数は膨大です。これで経過時間をどのように測定しますか?それは一瞬の断片であり、代わりにそれ以上のものでなければなりません。ありがとう
3 に答える
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に手紙を書くことができます。私は誰かがそれを感謝すると確信しています...:-)
1秒には1,000,000,000ナノ秒が含まれているため、数値がその範囲内にある限り、それは妥当です。
分数形式にしたい場合は、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