あなたはJavaScriptで計算集約的なものをやって、いくつかの理由である場合は、*(それらの事を覚えているとデビッドMandelinのあなたのエンジンを知って読まなければならない:あなたのJavaScriptが高速作り方プレゼンテーション - PDF、彼はより多くでこれを説明詳細*):
インラインでできます。
関数呼び出し
オブジェクトへのアクセスは高価で非常に高価で
多型があなたのパフォーマンスを要することができる、あなたの変数と引数は常に一つだけのデータ型を保持する必要があります。
Mathオブジェクトは、特に低速ではありませんが、とにかくそこdistance()
機能を見つけることができません、とMath.method()
呼び出しによって閉鎖からそのメソッドにアクセスすることは、非効率的です。
のでsqrt
は、もちろん、悪いことよりx*x
、はあなたのために良いかもしれないカスタムrandom
機能で、Piがmin
、ループ内にキャッシュされなければならないとmax
はおそらく、同様に三角関数や対数スピードについての考えを回避すべきではありません。
P.S:あなたは、((x >= 0 ? x : -x) + 0.5) >> 0
のようなものを行うことができますMath.ceil(Math.abs())
を置き換えるために、覚えて - 私は「集中的」と言うとき - 私は数クランチ、データ処理、物理学、グラフィックス、そのようなことについて話しています。通常のJavaScriptサイトやRIAの場合は、はのものを使用すべきではありません。私はここに提案しています。また、スピードハッキングのほとんどは、彼らが持っていますside effects
出典
2012-01-16 20:07:19
c69
おそらく、 'Math'メソッドはjavascriptが実装されている言語(典型的なブラウザではCまたはC++)で実装されているので、JavaScriptよりもはるかに高速です –
**測定**パフォーマンスの違い?あなたのすべてのターゲットブラウザー間で? –
まあ 'Math'は「距離」方法を持っていない、とその整数変換は速いかもしれないが、それはまた' Math.floor() 'や'恐らくMath.round() 'よりも意味的に異なるのです。 [jsperf](jsperf.com)を使ってこのようなことをテストできます。 – Pointy