2009-08-11 5 views
1

Ich habe einige Leistungsprobleme in meinem JavaScript, und ich habe nicht viel Erfolg Instrumentierung. Eines der Dinge, die ich ausprobiert habe, ist das Profil-Tool von Firebug. Es meldet, dass der oberste Einzelaufruf dojo's log() war. Nicht hilfreich meldet es eine Zeilennummer aus dem komprimierten Skript, so kann ich nicht sagen, was das Problem verursacht. Aber es scheint interessant zu sein, dass 70% der Zeilen im Profilbericht für die log() -Aufrufe von Dojo sind, also kumulativ muss es dort eine unglaubliche Menge an Zeit verbringen. Gibt es eine Möglichkeit, die Dojo-Protokollierung zu deaktivieren?Leistung von Dojo (Protokollierung, Kometen, Schieberegler)

Die einzige sichtbare Protokollierung ist ein Eintrag, der alle 1,5 Sekunden angezeigt wird und der für Kometen am Leben zu bleiben scheint. Ich benutze auch Dojo's Slider an einer Stelle, aber ich sehe keinen Beweis dafür, dass dies einen Performance-Hit verursacht.

Welche anderen Tools sollte ich verwenden, um Performance-Hotspots in JavaScript zu identifizieren? Der Teil meines Codes, der in JavaScript ist, ist nicht wirklich sehr groß, also würde es mich nicht wundern, wenn es Rundreisen zum Server wäre, die das Problem wirklich verursachen, aber ich weiß auch nicht, wie man das instrumentiert.

Antwort

0

Wenn Sie Dojo 1.2 oder höher verwenden, können Sie stripConsole = normal verwenden, während Ihr Build alle Protokollaufrufe automatisch löscht. Wenn Sie nicht das Build-System verwenden, dann ist dies wahrscheinlich die erste Sache, die Sie tun können, um die Leistung zu verbessern.

Einige Links zum Einstieg:

http://docs.dojocampus.org/build/index

http://docs.dojocampus.org/quickstart/custom-builds

+0

Ich habe um dojotoolkit.org herumgebrowst, und ich sehe nichts über das Bauen. Alles scheint davon auszugehen, dass Sie eine fertige Version verwenden möchten. Kannst du einen Hinweis auf die Aufbauanweisungen geben und was zum Herunterladen? – PanCrit

+0

Ich habe die Links hinzugefügt. Wenn Sie diese Dokumente noch nie gesehen haben: Sie sind ein wenig langsam und nicht auf die beste Weise strukturiert, aber es gibt eine Menge wirklich guter Informationen darin. – Marijn

0

Versuchen Sie JavaScript zu bauen, die Dojo-Builder verwenden. Beachten Sie auch, dass die langsamsten Aufrufe DOM-Aufrufe sind. Stellen Sie also sicher, dass Sie das DOM nicht innerhalb einer Schleife abfragen, wenn es nach draußen verschoben werden kann.

+0

Sehr langsam? Verglichen mit was? Letztes Mal hatte ich dieses Problem in Dojo 0.4. Die aktuelle Version ist 1.3. –

+0

Es ist sehr langsam, verglichen mit der Verwendung nicht. Natürlich ist das Erzeugen von Knoten und Objekten direkt über JavaScript schneller, als Dojo das DOM zuerst parsen zu lassen, bevor etwas erstellt wird. – aehlke

+0

Entweder haben Sie ein großes DOM, oder Sie messen das falsche Ding. Hast du damit versucht, Leute in der Dojo-Mailingliste zu überraschen? –

1

Sie verwenden wahrscheinlich eine komprimierte Version von Dojo. Wenn Sie dojo.js in dojo.js.uncompressed.js ändern, sollten Ihnen die Profilinformationen viel genauere Informationen anzeigen.

+0

Ich dachte ich hätte das probiert und keine weiteren Informationen bekommen. Ich werde es wieder versuchen. – PanCrit