2017-06-24 10 views
0

ここでは、単純なJavaScriptの追加操作と同じことを行う機能を比較します。この操作がJavaScript関数でカプセル化されたインスタンスは、通常の操作より速く実行されます。この比較で何が間違っていますか?Javascriptの機能は普通の操作よりも速い

https://jsperf.com/in-function-operators#comment-form

+0

これはベンチマークに近づき、コンパイラを一般的に理解するには間違った方法です。これらの結果を理解する前に、適切なベンチマークを作成する方法を理解する必要があります。 – naomik

+0

少なくとも600文字のコメントを関数に追加してもう一度テストしてください。 –

+0

異なるブラウザでは結果が異なるため、1つのコンパイラでもありません。ちょうどそれが好奇心を感じた。私は巨大なパフォーマンスのペナルティなしでjsで関数を使用できるかどうかを知りたかった。私は何が間違っていたのかを見て、定数を使用してそれに気付き、何らかの形で機能を最適化しました。私は乱数を加えましたが、それらはほぼ同じです。 (クロムでは) –

答えて

3

私はマイクロベンチマークを実行すると、それらはすべて、それらが同じ(ここでエラーの即ちマージン)を実行しているすべての意図および目的のためにそう実際にお互いの1%/ 2%withing行います。

なぜ彼らがおおよそ同じ性能を発揮するかについての答えは、JavaScript JITがその関数がinlinedであることを決定し、それによってプレーン演算と似た性能を出すという答えです。いくつかの状況では、JITは2つの定数を一緒に追加しているだけで、コードをまっすぐにしてassignment operation insteadに置き換えることさえできます(Uglifyが1 + 2 * 3を7に置き換える方法についてはJITコンパイラそれが識別できる場合は同じ操作を実行します)。

関連する問題