Ich vertraue nicht auf Ergebnisse von jsperf, die die Leistung von for loop vs forEach messen. Zumindest für Chrome und Firefox auf meiner Maschine sind die Ergebnisse völlig anders als die, die in jsperf beworben werden.
Ссылка ( mine)
Ссылка (beliebter)
Auf meinem Laptop mit Ubuntu 11.10 habe ich folgende Ergebnisse in Firefox:
Leider gibt Chrome das Ergebnis von console.timeEnd () nicht zurück, aber die Laufzeiten sind gleich und in Chrome nur schneller. Ich beobachte das für fast 10x schneller als für den Loop in Chrome und 3x schneller in Firefox In Chrome bekomme ich ungefähr diese Laufzeiten:
%Vor%Hier ist der Code, den ich in der Firefox- und Chrome-Konsole ausgeführt habe.
%Vor%Die Tests für eine Million Elemente haben denselben Leistungsunterschied. Könntest du mir bitte mitteilen, wenn ich etwas verpasse, und ich sollte den Ergebnissen von jsperf statt den echten, die ich beobachte, vertrauen? Natürlich vertraue ich den wirklichen Ergebnissen, die ich gerade hier in meinem Browser sehen kann.
EDIT: Das Testszenario ist nicht objektiv, wie es bei der Diskussion mit @Blender entdeckt wurde. Sieht so aus, als würde js optimizer für jede Schleife keine Aktion ausführen und somit die Laufzeit verdecken, wenn es echten Code gäbe.
Hier ist ein echter Test: Ссылка (führe es mehrmals aus)
Offensichtlich sind sie praktisch gleich.
Wenn also echte Berechnungen durchgeführt werden, spielt for vs forEach
keine Rolle. Andere Faktoren haben einen viel größeren Einfluss auf die Leistung. Besonders nach der Laufzeit hat Optimierungen angewendet.
Diese Website zeigt Ergebnisse für eine ganze Reihe von JavaScript-Schleifenansätzen Ссылка . Die Ergebnisse sind der Durchschnitt aller Websitebesucher, die den Benchmark im Vergleich zu Ihrem eigenen ausführen, wenn Sie den Benchmark ausführen.
Tags und Links javascript performance jsperf