Ich habe eine Anwendung, die ich viel Werte Array drücken, so dass ich testen Sie die Ausführungszeit:SetTimeout in Javascript-Schliesser schneller laufen
var st = new Date().getTime();
var a = [];
for (var i = 0; i < 20971520; i++) {
a.push(i);
}
var ed = new Date().getTime();
console.info((ed - st)/1000);
console.info(a.length);
ich die Codes in Firefox-Konsole und Chrome-Konsole laufen direkt und es kostet 37 seconds
. Und während der Ausführung kann sogar die Maus in Chrome bewegt werden, aber es gibt keinen interaktiven Effekt.
Dann habe ich die Codes ändern:
function push() {
var st = new Date().getTime();
var a = [];
for (var i = 0; i < 20971520; i++) {
a.push(i);
}
var ed = new Date().getTime();
console.info((ed - st)/1000);
console.info(a.length);
}
var tr = setTimeout(push, 50);
Vereinfachen Sie die Codes in Funktion setzen, und nennen es die setTimeout
verwenden, kostet es 0.844 second
. Und während der Ausführung kann ich normalerweise in Chrome arbeiten.
Was ist hier los?
Ich weiß, dass die setTimeout
die Steuerung an den Browser setzen wird, um den UI-Job zu machen, der die Seite reagieren lässt. Wenn ich zum Beispiel während der Mausbewegung der Seite eine Berechnung durchführe, würde ich die Berechnung verzögernd ausführen, um zu verhindern, dass sie die Benutzeroberfläche blockiert.
Aber warum reduzieren Sie die gesamte Ausführungszeit der gleichen Codes?
Vielleicht ist es nur Caching. Haben Sie versucht, die Ausführungsreihenfolge zu vertauschen, d. H. Zuerst die setTimeout-Variante und dann die andere? –
Was passiert, wenn Sie einfach 'push()' aufrufen? – Freez
Es dauert die gleiche Zeit mit oder ohne Zeitüberschreitung für mich. – DoctorMick