2017-06-18 3 views
3

私はjsperf.comとjsben.chの両方でベンチマークを作成しましたが、実質的に異なる結果が得られています。どのJSベンチマークサイトが正しいですか?

JSPerf:https://jsperf.com/join-vs-template-venryx
JSBench:コードブロックがまったく同じであることをhttp://jsben.ch/9DaxR

注意。 jsperfで

、ブロック1が最速より "61%遅い" である:

jsbenchで、ブロック1は、最速よりわずか32%遅くなる:((99から75)/ 75)

何がありますか?私はベンチマークサイトが少なくとも数パーセント以内で同じ結果を出すと期待しています。

矛盾しているため、どのオプションが最速かを判断することができません。

答えて

3

TL; DR:perf.zone上とjsbench.github.ioにあなたのコードを実行した結果は、密接jsperfと一致し、(herehereを参照してください)。個人的には、これらの結果以外の理由で、私はこれら3つのウェブサイトをjsben.chよりも信頼しています。

最近、私は文字列連結のパフォーマンスをベンチマークしようとしましたが、私のケースでは1000000+個の文字列から1つの文字列を構築しています(join(''))。私のマシンでは、は、結果を与える代わりに、jsben.chがタイムアウトしました。です。おそらくそれはあなたに良く動作しますが、私にとってそれは大きな警告サインです:

http://jsben.ch/mYaJk

http://jsbench.github.io/#26d1f3705b3340ace36cbad7b24055fb

https://run.perf.zone/view/join-vs-concat-when-dealing-with-very-long-lists-of-single-character-strings-1512490506658

(私が今までjsperfのnot all tests insertedに対処する必要が気にすることはできません再び、申し訳ありません)

現時点で私はと思われますが、perf.zoneがわずかにあることを証明することはできません。より信頼性の高いベンチマーク番号:

  • lz-stringを最適化する際、私は非常に長い時間jsbench.github.ioを使用しますが、いくつかの点で私は、コードの特定の種類の極端に大きな誤差マージンが100%を超え、そこに気づきました。

  • モバイルで実行中のベンチマークはjsperf.comとperf.zoneでうまくいくが、jsbench.github.ioはちょっとしたジャンクであり、テストを実行している間にCSSが壊れてしまう。

おそらく、これら二つのことが関係している:おそらくDOMを更新するための用途をjsbench.github.io方法は、(彼らはそれをベンチマークにメタ必要があります...)ベンチマークに影響オーバーヘッドのいくつかの種類を紹介します。

注:perf.zoneには欠陥がないわけではありません。ベンチマークを保存しようとするとタイムアウトになることがあります(最悪の場合...)。コードを編集するのではなく、自分のコードをフォークするだけです。しかし、出力はまだjsperfと一直線になっているようだ。has a really nice "quick" mode for throwaway benchmarking

関連する問題