2012-03-30 8 views
1

Ich habe einige JavaScript, die ich versuche, die Zeit zu messen, die es dauert, um auszuführen.Benchmark-Javascript-Ausführung mit Callback-Funktionen

Das Problem dabei ist, dass die for-Schleife schnell abgeschlossen wird, währenddessen die Ausführung der Item.save() -Methode noch nicht abgeschlossen ist.

Irgendwelche Vorschläge, wie man diese Zeit einstellt, die die volle Ausführungszeit innerhalb des Inhalts der Schleife berücksichtigt?

Vielen Dank!

var start = new Date().getTime(); 
var Item = new Item(); 
for (i = 0; i < 500; i++) { 
    var item = {}; 
    item.name = 5; 
    item.id = 10; 
    item.set = []; 
    Item.save(item, function (err, res) { 
    console.log(res); 
    }); 
} 
var elapsed = new Date().getTime() - start; 
console.log(elapsed); 

EDIT: Dies ist auf einem Nodejs-Server.

Antwort

1

Verwenden Sie einfach Chrome's profiling tools. Sie geben Ihnen einen Einblick in insgesamt genau, wie viel CPU-Zeit jeder Funktionsaufruf auf Ihrer Seite Aufnahme:

http://code.google.com/chrome/devtools/docs/cpu-profiling-files/two_profiles.png


Für Knoten, können Sie node-inspector ‚s experimentelle Profiler versuchen.

+0

Tut mir leid, ich hätte NodeJS Server hinzugefügt. – dzm

+0

@dave, siehe bearbeiten. – josh3736

+0

Danke, das funktioniert gut - Allerdings wird es immer noch die Profiler-Marke beenden, bevor alle Ausführungen gemacht worden sind. – dzm

0

Der beste Weg, um dies zu behandeln wäre, die Item.save() -Funktion zu ändern, um die Startzeit aufzunehmen und dann am Ende zu vergleichen. Oder implementieren Sie eine Callback-Funktion (succes :) für Item.save().