小さなコードスニペットの2つのバージョンの違いは何ですか?これが何であるかを理解しようとしないでください。これは、パフォーマンスの問題を見つけるために他のすべてのものを削除した後の最終コードです。私にとってArrayのjavascriptのパフォーマンス
function test(){
var start=new Date(), times=100000;
var l=["a","a"];
for(var j=0;j<times;j++){
var result=document.getElementsByTagName(l[0]), rl=result.length;
for(var i=0;i<rl;i++){
l[0]=result[i];
}
}
var end=new Date();
return "by=" + (end-start);
}
このスニペットFirefoxで236msがかかりますが、あなたはl[1]=result[i];
にl[0]=result[i];
を変更した場合にのみ51msかかります。 document.getElementsByTagName(l[0])
をdocument.getElementsByTagName(l[1])
に変更すると同じことが起こります。両方が変更された場合、スニペットは再び遅くなります。
DevTools/ProfilesでGoogle Chromeを使用した後、低速コードの実行時にtoString関数が追加されています。しかし、私はtoStringを取得する機会がありません。なぜなら、この場合、なぜそれが必要なのでしょうか?
あなたはブラウザの違いが5倍も長くなるように教えてください。
おかげさま上記のコードで
基本的に、機能を完全に異なるものに変更したり、まったく異なる要素を取得したりすると、時間がかかります。誰がそれをサンクしたでしょうか? – adeneo
それは重要なことではありません.l [0]とl [1]は両方とも 'a'なので違いはないようです。 –
「理解しないでください」それは私たちの手助けをするのが少し難しいです:)しかし、なぜ地球上であなたはドームリストの結果をgetElementsByTagNameに入れたいのですか? – Keith