1. ホーム
  2. javascript

[解決済み] javascriptでミリ秒単位で時間を取得する良い方法は?

2022-04-30 12:41:03

質問

JavaScriptでdateオブジェクトを使用してミリ秒単位で時間を取得する代替方法はありますか?少なくとも、この値を取得する必要があるたびに新しいオブジェクトをインスタンス化せずに、そのオブジェクトを再利用する方法はありますか?JavaScriptで簡単なゲームエンジンを作ろうとしているのですが、quot;delta frame time"を計算するときに、フレームごとに新しいDateオブジェクトを作らなければならないので、これを質問しています。これによるパフォーマンスへの影響についてはあまり心配していませんが、このオブジェクトが返す正確な時間の信頼性については、いくつかの問題を抱えています。

JavaScript のガベージコレクションが関係しているのか、それとも Date オブジェクトの高速更新の限界なのか、よくわかりません。デルタ値をある定数に設定すると、アニメーションは完全に滑らかになるので、この "jumping" は私が時間を取得する方法に関連していると確信しています。

関連するコードは、デルタタイムを計算する方法だけです。

prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;

動きやアニメーションを計算するとき、一定の値にデルタタイムを掛けています。

Dateオブジェクトを使用してミリ秒単位で時間を取得することを避ける方法がない場合、変数(ゲーム開始からの経過時間をミリ秒で表したもの)をインクリメントし、SetTimer関数を使用してミリ秒に1回の割合で呼び出す関数は、効率的で信頼できる代替手段となりますか?

編集 : 今、私のコードをさまざまなブラウザでテストしましたが、この "jump" は本当に Chrome でのみ明らかで、Firefox ではそうではないようです。しかし、両方のブラウザで動作するメソッドがあれば、それはまだ素晴らしいことです。

解決方法は?

試す 日付.現在() .

スキップはガベージコレクションが原因である可能性が高いです。一般的にガベージコレクションは、変数をできるだけ再利用することで回避できますが、ガベージコレクションの休止時間を短縮するための方法については、具体的に申し上げられません。