Benchmarks mit Javascript
Oft entfachen sich hitzige Diskussionen in Foren darüber, welche Funktion für einen Zweck geeigneter und/oder schneller ist. Dann muss ein Benchmark her, mit dem die Geschwindigkeit der unterschiedlichen Funktionen verglichen werden kann. Als langjähriger Perl Programmierer benutze ich häufig das Modul Benchmark mit dem sich das relativ leicht realisieren läßt. Ich habe ein Javascript geschrieben, das ähnlich arbeitet und hier vorstellen möchte.
Das Skript besteht in erster Linie aus der Funktion Benchmark()
(neben ein paar Helferfunktionen zum formatieren der Ausgabe). Die Funktion erwartet drei Parameter.
Benchmark(count, tests, onready); |
count
ist die Anzahl der Ausführungen jeder Funktion, je nach Geschwindigkeit des Rechners und Komplexität der Funktionen, muss hier ein geeigneter Wert gewählt werden. Bei komplexen Funktionen sind ein paar tausend genug, bei einfachsten Vergleichen können auch mal ein paar hundertausend Aufrufe nötig sein, um aussagekräftige Vergleichswerte zu ermitteln. tests
ist ein Javascript Objekt, mit folgendem Aufbau:
var tests = { funktion_1: function() { tu_was();}, funktion_2: function() { tu_was_anderes();}, /* usw. */ }; |
onready
ist eine Funktionsreferenz auf eine Funktion, die am Ende aufgerufen wird. Das ist nötig, da bei lang laufenden Test die Browser u.U. die Skriptausführung stoppen. Daher werden die einzelnen Funktionstests mit einem kurzen (1ms) Timeout unterbrochen. Es ist also nicht möglich einen Rückgabewert unmittelbar zu benutzen.
Beispiel
Das Beispiel vergleicht, welche Funktion am schnellsten ist um einen String in eine Zahl umzuwandeln und gibt dann am Schluss eine Meldung mit dem Ergebnis aus.
Quellcode
var test = { parseInt: function () { var i = '100.10'; i = parseInt(i);}, parseFloat: function () { var i = '100.10'; i = parseFloat(i);}, mal: function () { var i = '100.10'; i = 1* i;} }; Benchmark(100000, test, function(t) {alert(t);}); |
Test
Beispiel starten
Download
ähnliche Artikel
- 5. Juni 2009 -- Speed up your Javascript – Video (0)
Aktuell wird überall und dort, ein Video von Douglas...
- 28. November 2024 -- Animierte Tabellen Sortierung (10)
Aufgrund einer Frage bei meinem alten Tabellensortierer-Skript...
- 6. August 2019 -- CAS Nummer validieren (0)
Wieder ein kleines Skript aus dem Bereich Chemie. Um...
3924 mal gelesen.
2 Kommentare
direkt zum Formular »
Seiten:
5. November 2009: 20:35
Ich bin schon froh, wenn es überhaupt läuft …
25. Dezember 2009: 14:50
[…] Funktionen, die dasselbe leisten, miteinander vergleichen kann, um Algorithmen zu optimieren: Benchmarks mit Javascript [Javascript ist Toll!] Zur JavaScript-Performance tragen sehr verschiedene Faktoren bei, deshalb gibt es auch viele […]