Um für zukünftige Blogartikel im Bereich Performance Javascripte plattform- und browserübergreifend auf ihre Geschwindigkeit hin testen zu können, habe ich mir hierzu ein Werkzeug gebaut.
Es ist eine Javascript-Funktion, die sich um das Profiling übergebener Methoden kümmert. Übergeben wird ein Array mit Methoden, dessen Dauer getestet verglichen werden soll. Als zweiter Parameter wird die Anzahl der Durchläufe für jede Methode angegeben. Hier sollte man Werte ab 10.000 eintragen, da ein Unterschied sonst nahezu unmessbar ist. Als Resultat erhält man ein Array mit den Millisekunden, die die jeweilige Methode auf alle Cycles verbraucht hat. Die Sortierung des Arrays entspricht der Sortierung des Eingabearrays
methods.
function profile(methods, cycles) {
var methodDurations = [];
for(var i = 0, count = methods.length; i < count; i++) {
var methodStart = (new Date()).getTime();
for(var j = 0; j < cycles; j++) {
methods[i]();
}
var methodEnd = (new Date()).getTime();
methodDurations.push(methodEnd - methodStart);
}
return methodDurations;
}
Ideen
- Validierung der Parameter
- Möglichkeit Parameter für die aufzurufenden Methoden zu übergeben
- Andere Ausgabeformate als Array
Vorschläge
Habt ihr Ideen oder Vorschläge zum Profile.js? Was ist sinnvoll, was eher nicht? Welche Erweiterung würdet ihr euch wünschen? Fragen über Fragen, mich interessieren die Antworten. Ich freue mich auf Kommentare!
