問題タブ [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.
android - SensorEvent.timestamp の不一致
私のアプリケーションは、Android 4.4.X で導入されたステップ検出センサー APIを使用して、バックグラウンドでステップ カウントを実行します。
各ステップ イベントが発生した正確な時間 (少なくとも 1 秒の精度) を知ることは、私のアプリにとって不可欠です。
センサーのバッチ処理を実行するため、呼び出された時間onSensorChanged(SensorEvent event)
は、ステップ イベントが発生した時間と同じではありませんevent.timestamp
。フィールドを使用してイベント時間を取得する必要があります。
このフィールドに関するドキュメントは次のとおりです。
イベントが発生したナノ秒単位の時間
問題:
一部のデバイス (Moto X 2013 など) では、このタイムスタンプは起動後のナノ秒単位の時間のように見えますが、一部のデバイス (Nexus 5 など) では、実際には と同じナノ秒単位のユニバーサル システム時間を返しますSystem.currentTimeMills() / 1000
。
それについてはすでに未解決の問題があることは承知していますが、センサーのバッチ処理が導入されてから、このフィールドを使用してイベント時間を知ることが重要になり、System.currentTimeMills()
私の質問:
すべてのデバイスで常にシステム ミリ秒単位のイベント時間を取得するにはどうすればよいですか?
java - (デルタ時間) Java で 1 秒あたり 60 の更新を取得する
このコードは何度か見ました。
上記のコードは、システム時間を取得して に保存しlastTime
ます。60 ティックは、1 秒あたりの更新回数に相当するはずです。
を取りnow
、減算lastTime
してから、ナノ秒/60 に変換します。now
とナノの間の時間差がlastTime
60 を超えると、デルタが 1 秒あたり 60 回以上になるという保証はありますか? tick();
1秒間に約60回実行される理由がわかりません。私の計算では、ループが実行されるたびにデルタが 0.0025 程度増加します。
java - Android: System.nanoTime の値を確認する
私のアプリでは、次の方法で nanoTime を開始します。
「startTime」の特定の値(例:1000000)でメソッド「myMethod」が呼び出されるようになりました
それを行う最良の方法は何ですか?
java - 1000000000 ナノ秒が 1 秒に等しくないように見える
私はいくつかの魔法の呪文を作成していますが、明らかに各使用の間に遅延が必要です.
現在、google によると、1 秒は 1000000000 ナノ秒です。
ただし、魔法の呪文は 2 秒以内に再充電されます。
明らかに、私のコードはSystem.nanoTime()
プラス 30 秒を追加しようとしており、現在のシステムnanoTime
がハッシュマップに入れたシステムよりも大きいかどうかを確認し、大きい場合は呪文を実行します。
java - System.nanoTime() が呼び出し間で同じ値を返す場合の処理方法は?
この質問は、への攻撃を意図したものではありませんSystem.nanoTime()
。正しく使うには驚くほどトリッキーな方法だと思います。
System.nanoTime()
呼び出し間で同じ値を返すことに対処する方法は何ですか? 例: 複数のスレッドが呼び出しSystem.nanoTime()
て同じ値を取得します。
Windows でテストを実行しているときに、コード ベースでこれが頻繁に発生することに驚いています。nanoTime
複数のスレッドにまたがって到着するイベントをソートするために使用します。おそらく、これは Windows のみの問題であり、Linux のモノトニック クロックはより詳細です。
参考文献:
android - System.nanoTime() が Android で間違った時刻を返す
あらかじめ決められた時間の経過後にいくつかのイベントが発生するゲームを開発しています。そのためには、ゲーム開始からの経過時間を計算する必要があります。これを行うには、メイン ループでスレッドを起動し、 System.nanoTime()で経過時間を計算します。
私は自分のスマートフォンでコードをテストしましたが、スリープ ボタンを押して電話をスリープ状態にしない限り (アクティビティのonpause()メソッドをトリガーします)、かなりうまく動作します。しかし、スリープボタンを押すと、非常に奇妙なことが時々あります。
System.nanoTime()の代わりにSystem.currentTimeMillis()を使用してみましたが、状況はさらに悪化しています (マルチコア デバイスを搭載した Windows システムではSystem.nanoTime()に問題があったことはわかっています。ちなみに私のスマートフォンもマルチコアです)。
コードは次のとおりです。
スリープボタンを押さないときの通常の出力は次のとおりです。
そして、3秒後にスリープボタンを押し、数秒後にもう一度押したときの異常な出力です。(異常な動作は 4 ~ 6 です) ご覧のとおり、4 秒未満経過した後、System.nanoTime()は代わりに 6 秒を報告します。
この動作を回避するためにコードを変更するにはどうすればよいですか?
performance - JMeter の nanoThreadSleep プロパティ - どのように使用しますか?
私は負荷テスト ソリューションをセットアップしています。JMeter のドキュメントを読んでいると、テスト計画に多数のプロパティを設定できることがわかりました。テストはすでに正常に実行され、結果やグラフなどを生成していますが、JMeter や結果の精度などについてより深く理解しようとしたときに、以下の宣伝文句に出くわしました。
JMeter のドキュメントから、次のことを読みました。
nanotime
これで、固定されているが任意の原点時間に基づいていることを理解していますcurrenttimeinmillis
が、システム時間 (つまり、壁時計) に基づいています。そして、それがより正確になることを知っているので、nanotime
私はそれを使用することに興味があります.負荷テストを行っており、応答時間の測定を可能な限り正確かつ正確にする必要があります.
しかし、私が抱えている問題は、使用方法を理解することnanoThreadSleep
です。ナノタイムオフセットとは正確には何ですか? ナノタイム オフセットを計算するバックグラウンド スレッドが必要な理由、または必要でない理由を教えてください。nanotime を使用して JMeter を実行できるようにし、nanoThreadSleep
設定を明示的に使用しないとどうなりますか?
StackOverflow と Google で何らかの説明を検索しましたが、ここに貼り付けた小さな宣伝文句で JMeter のドキュメントに記載されている以外の説明を見つけることができません。これを理解し、それを正しく効果的に使用する方法について、他の人が助けてくれますか?