1

だから私は JavaScript でゲームを書いてきました (JavaScript がたまたまスクリプト言語であるゲーム エンジンを使用して、Web ゲームではありません)。残念ながら、ゲーム エンジンの JavaScript エンジンは SpiderMonkey の古いバージョンであり、私のゲームの実行は少し遅くなります。極端に遅いわけではありませんが、少し最適化を行うことにしたほど遅いです。

グローバルの代わりにローカル変数を使用したり (これは良い考えです)、ポストフィックスのインクリメント/デクリメントの代わりにプレフィックスを使用したり、ループでカウントアップの代わりにカウントダウンしたりするなど、いくつかの基本的な最適化を知っていますが、より良い JavaScript の最適化は何ですか?

4

2 に答える 2

2

ソース コードを台無しにする代わりに、Closure Compilerを試してみましたか? これは、いくつかの最適化を行う JavaScript から JavaScript へのコンパイラーです。ほとんどはサイズのためですが、結果の js も多くの場合より高速に実行されます。ただし、最適化が V8 固有のものであるかどうかはわかりません。

于 2010-12-30T20:41:21.563 に答える
1

コードがどのように構成されているかはわかりませんが、その一部が頻繁に実行される関数またはループにあるとしましょう。

  • 可能な限り交換if()する? :

例えば

if (expr) a = 1;
else a = 2;

になる

a = expr ? 1 : 2;
  • 可能であれば一連if()の を に変換するswitch()
  • を使用するかsubstr()、どちらがより高速substring()slice()を確認します (組み込みブラウザーでは、ファクター 3 の違いに気付いたことがあります)。ただし、パラメータには注意してください。
  • マイナーなものであっても、値の再計算や同じパラメーターで同じ関数を再度呼び出すことは避けてください。
  • 配列の同じ要素に何度もアクセスする場合は、ローカル変数に格納します
  • eval()非常に遅い(それが悪であるという事実に加えて)
  • JavaScript エンジンはシングルスレッドであることに注意してください。タイマーやインターバルでさえ、並列に実行されるものはありません。

コードが読みにくい場合は、コメントを書いてください。

于 2010-12-30T21:36:23.997 に答える