Rolf B: Garbage Collector verbessern/schneller machen

Beitrag lesen

Hallo Michael_K,

meine Timing-Tests gestern fanden auf meinem privaten Desktop PC statt. Ich habe das jetzt auf meinem Dienst-Laptop mit Edge 130 wiederholt, und finde einen Faktor 4 in der Laufzeit.

Dein Test ist aber nicht valide. Du füllst ein Array mit konstanten Werten, und überträgst nicht ein bestehendes Array in ein neues.

Wenn ich einen Test mache, der deinem Eingangsbeispiel entspricht, finde ich einen Faktor von 2 zwischen Push und Assign, und nochmal einen Faktor 2, wenn ich als Zielarray ein Uint32Array statt eines normalen Arrays verwende https://jsperf.app/kanayo/2.

Ein Vergleichstest mit Firefox war mir nur mit der ESR-128 Version auf einem System möglich, wo auch andere Benutzer drauf sind, und dort waren Push- und Zuweisungsmethode im Wesentlichen gleich schnell. Der Push war teils sogar schneller, aber das muss ich zu Hause nachtesten, um einen wirklich validen Vergleich zu haben. Entweder ist der FF so schlau, die Push-Schleife zu erkennen und das Zielarray entsprechend groß vorzubereiten, oder die push-Methode ist generell besser optimiert, oder er implementiert die Zuweisung intern so, als ob ein Push gemacht würde. Aber auch auf Firefox ist das Uint32Array doppelt so schnell wie das normale Array.

Einen direkten Vergleich Edge/Firefox habe ich nicht, weil ich sie nicht auf der gleichen Maschine habe.

Also - danke für den Hinweis: offenbar gibt es hier relevante Unterschiede zwischen V8 und Spidermonkey. Ein Test mit Nitro (-> Safari) wäre auch noch interessant.

Und danke für den Hinweis auf jsperf, das Tool war mir ganz entfallen!

Rolf

--
sumpsi - posui - obstruxi