ベンチマーク: http: //jsperf.com/substringing
それで、私は最初のHTML5ブラウザベースのクライアントサイドプロジェクトを立ち上げています。非常に大きなテキストファイルを、基本的に1つまたは複数のオブジェクトの配列に解析する必要があります。私はそれをどのようにコーディングするかを知っています。現在の私の主な関心事は、パーサーコードをできるだけ早く取得することであり、私の主なテストベッドはChromeです。ただし、サブストリングメソッドの違いを調べていると(私は長い間JavaScriptに触れていません)、このベンチマークはFireFoxと比較してChromeでは非常に遅いことに気付きました。なんで?
私の最初の仮定は、FireFoxのJSエンジンが文字列オブジェクトを処理する方法に関係していることです。FireFoxの場合、この操作は単純なポインター操作ですが、Chromeの場合は実際にハードコピーを実行します。しかし、Chromeがポインター操作を行わない理由や、FireFoxが行う理由はわかりません。誰かが洞察を持っていますか?
JSPerfはFireFoxの結果を破棄しているようで、BrowserScopeに表示されていません。私の場合.substr()
、FF4で9,568,203±1.44%Ops/secがオンになっています。
編集:つまり、実際にはChromeの下にFF3.5のパフォーマンス結果が表示されます。そこで、ポインター仮説をテストすることにしました。これにより、Substringsテストの2番目のリビジョン1,092,718±1.62%
が作成されました。これは、FF4での1,195±3.81%
Ops /秒とChromeでのOps/秒を実行し、わずか1000倍高速ですが、それでもパフォーマンスに不可解な違いがあります。
追記: いいえ、InternetExplorerを1回舐めることは心配していません。私は自分のスキルを向上させ、この言語をより深いレベルで理解しようとすることを心配しています。