問題タブ [nanotime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - System.currentTimeMillis() を System.nanoTime() と組み合わせて使用することは合理的ですか?
これが私のささやかな提案です:
- JVMの起動時
System.currentTimeMillis()
「壁時計」の開始時刻として呼び出して保存します:long currentTimeMillis0
。- 呼び出し
System.nanoTime()
て、「ナノ」時間の開始として保存しますlong nanoTime0
。
- プログラムの実行中、 を使用して多くのタイムスタンプを保存し
System.nanoTime()
ます。
nanoTime の正確な値はそれ自体では役に立たないことは十分承知していますが、duration: のコンテキストで使用すると便利ですendNanoTime - beginNanoTime
。
記録された任意のナノタイムで、「currentTimeNanos」を次のように計算することは合理的
(1000L * currentTimeMillis0) + (anyNanoTime - nanoTime0)
ですか?
java - Java - ナノ秒を HH/MM/SS に変換する
私の Windows マシンで午前 11 時 35 分頃に実行すると、26
. 1 日が 26 時間ということはあり得ませんし、あったとしても、期待される結果にはほど遠いもの11
です。なぜこれが機能しないのですか?(また、Time Date ライブラリを使用したくありません。もっと簡単な方法があることはわかっています)
私は自分の電話にいるので、これがすべて正しくフォーマットされることを願っています。みんな、ありがとう!
java - System.nanoTime() が壊れているようです。コード効率をチェックするための代替手段が必要
いくつかのメソッド ( ) の効率をチェックし、それらを全体的な実行時間と比較したかったのでfoo(int)
、最終的に次のようなものを書きました。
foo(int)
1 回の呼び出しで数分から 30 分 (合計で 293 年ではありません!) かかることもあります。問題は、TestDuration (メソッドにかかる時間全体) が methodDuration よりも小さい場合があることです。これは私には不可能に思えます。したがって、2 つの質問:
- methodDurations を比較する古いテストはどれくらい有効ですか?
- 無効なタイムスタンプを取得する危険を冒さずにパフォーマンスをさらにテストするには、何を使用すればよいですか? 行っても
System.currentTimeMillis()
安全ですか、それとも同じ問題がありますか?
現在、テストは Linux システムで行われています。ここで、この問題に関するいくつかの古い質問と回答を既に見つけました (例: Is System.nanoTime() 完全に役に立たない? ) が、一部の状態は Windows の問題であり、他の回答は言及されているように不明なままです。数歳でも)。ほとんどの答えでさえ互いに矛盾しています!
java - 同じコードが for ループ内で短くなるのはなぜですか?
それで、nanoTime を少し操作するためだけに、かなりばかげたプログラムを作成しました。小さなコードの実行時間をチェックできるようにしたかったので、nanoTime が最適だと思いました。この短いコードの平均実行時間を求めたかったので、for ループの中に入れました。ただし、for ループ内では、平均は約 6,000 ナノ秒少なくなります。これは小さなコードでは大きな違いではないことはわかっていますが、まったく同じコードでもなぜ違うのでしょうか? 異なる時間を生成する 2 つのブロックを次に示します。これは平均で約 8064 ナノ秒です。
これは平均で約 2200 ナノ秒です。
平均を求めるには、totalTime*.1 を使用します
android - Android - System.nanoTime() 奇妙な動作?
このサイトを検索して、Android Marshmallow アプリケーションで表示されているものに対する回答を探しました。
私のアプリケーションは、受信した activitydetection API インテント間の期間を測定します。インテントを処理するルーチンでは、System.nanoTime()
受け取った値を使用して保持します。次のインテントを受け取ったらSystem.nanoTime()
、現在の から永続ストレージの前回の時間を減算しSystem.nanoTime()
ます。
私の logcat タイムスタンプ エントリは、インテント アクティビティ間に最大 10 秒かかることを示しています。を使用して計算された経過時間は、System.nanoTime
1 秒から予想される 10 秒までの範囲で表示されます。
経過時間を決定するためのすべての処理は、シングルトン オブジェクトで行われます。計算された経過時間と現在のナノ時間の永続化の両方が、このシングルトンで行われます。
値が正しくない理由はありますか? アプリケーションは実行中ですが、画面がロックされています。
lastTotalTime は、永続ストレージからロードされたローカル変数です。に変更
java - System.nanoTime() は、Java 7 と Java 8 の間で異なる値を返します
System.nanoTime()
同じコードをコンパイルして Java 7 と Java 8 に対して実行すると、異なる値が返されます。
このコード片:
これをJava 7で印刷します
そしてこれはJava 8で
なぜ、どのようにこれが起こるのですか?
実行環境はmac Sierraです。