2012-03-30 4 views
1

Ich habe einen Prozess, der Hunderte von Zeilen in einem Raster über jQuery aktualisiert. Es dauert zu lange, also versuche ich herauszufinden, wo der Flaschenhals zuerst ist, damit ich dort arbeiten kann. Ich habe das Profilerstellungs-Tool von Chrome ausprobiert, es aber schwer verstanden, es zu verstehen (siehe Screenshot). Wie finde ich heraus, welches das Problem ist, da sich Selbst und total völlig unterscheiden?Wie kann ich Javascript-Profil lesen und optimieren?

+0

Wir müssen sehen, wie Sie es mit Code machen. Alles ist Zeile für Zeile und das Aktualisieren der DOM 100 Zeiten ist schlecht. – epascarello

+0

Mein erstes Problem ist, ich weiß nicht, wo der Engpass ist, den Code zu geben. Es gibt Tausende von Codezeilen, also hoffe ich auf Hilfe bei der Frage, aus welchem ​​Bereich das Snippet stammt. – TruMan1

Antwort

2

self ist, wie viel Zeit wurde verbrachte Arbeit direkt in dieser Funktion.

total ist, wie viel Zeit in dieser Funktion und in den aufgerufenen Funktionen verbracht wurde.

+2

http://stackoverflow.com/questions/7127671/difference-between-self-and-total-in-chrome-cpu-profile-of-js –

2

Der Flaschenhals hier ist fast garantiert das DOM (Methoden innerhalb des Browsers), nicht irgendein spezifischer JS-Code.

Wenn Sie genügend Daten anzeigen, dass die Aktualisierung den Browser für einige Sekunden sperrt, sollten Sie sich überlegen, stattdessen ein virtuelles Scrollraster zu verwenden. Mein Favorit ist SlickGrid.

Anstatt nur eine riesige Tabelle zu rendern, speichern Sie Ihr Dataset in wesentlich leichteren JS-Objekten im Speicher. (Dies kann folglich in einer Größenordnung geändert und sortiert werden, die schneller ist als die DOM-basierten Aktualisierungen, die Sie gerade ausführen.) SlickGrid rendert nur DOM-Elemente für den Teil der Tabelle, den Sie gerade betrachten, so dass es viel weniger Belastung gibt der Browser.

Sie können auch den Datensatz load small chunks gleichzeitig auswählen (das Back-End wird als einfache Seitennumerierung implementiert), sodass Sie effektiv unendliche Zeilen im Browser mit konstanter Leistung anzeigen können.