Ich habe einen Tisch mit ungefähr 30 Reihen und ungefähr 10 Spalten. Die Zeilen sind ein Teilbereich einer viel größeren Menge (was ich manuell mache, um ein großes DOM zu vermeiden). Die Spalten werden in einer Liste wie [{name: "firstname", width: 200}, {name: "married", type: "bool"}]
gespeichert, was eine gewisse Flexibilität ermöglicht (zB das Anzeigen der Eigenschaft "verheiratet" als Kontrollkästchen).
Also gibt es nur ungefähr 300 Felder, aber der Digest-Zyklus dauert ungefähr eine Sekunde (auf meiner i5-2400 CPU @ 3.10GHz).
Ich habe Probleme, die Batarang-Performance-Seite zu interpretieren. Es sagt
%Vor%Die Bedeutung der (spärlich benannten) Variablen ist mir klar:
e
steht für Entität, d. h. Tabellenzeile. p
steht für Eigenschaft und tritt nur außerhalb der Tabelle auf. c
steht für Spalte. e[c.name]
steht für den Feldinhalt (von der Entität e
die Eigenschaft, die von c
benannt wird). Aber die Leistungszahlen machen wenig Sinn:
p.name
wird nur vielleicht 10 mal benutzt, wie kann es so lange dauern?
c.name | translate
kommt auch nur 10 mal vor (in der Kopfzeile), wie kann es so lange dauern?
Ich kenne {::a_once_only_bound_expression}
, und ich habe es versucht, aber ohne viel Erfolg. Was ich eigentlich brauche, ist folgendes:
c
ändert, erstellen Sie die gesamte Tabelle neu (dies geschieht nur ausnahmsweise, deshalb interessiert mich die Geschwindigkeit nicht). e
ändert, erstellen Sie die gesamte Zeile neu (wenn eine Änderung erfolgt, dann nur in einer einzelnen Zeile). Irgendeine Möglichkeit, dies zu erreichen?
Ich denke, was ich brauche, könnte mit einer Direktive erreicht werden, die nach dem Rendern alle Winkelstücke aus der Reihe entfernt:
Ich könnte bei Bedarf eine einzelne Uhr pro Zeile hinzufügen, die für das Repaint zuständig ist.
Macht es Sinn?
Ich war ziemlich damit beschäftigt, an der Anwendung zu arbeiten - andere Dinge als die Leistung zu verbessern. Ich hatte sehr viel Glück und bekam etwas Leistung als Bonus. Dann habe ich die Seiten ein wenig vereinfacht und die Geschwindigkeit ist jetzt akzeptabel. Zumindest für jetzt.
Immer noch:
Vielleicht möchten Sie NgTable suchen, das Eingaben von json-Daten als Zeilen und Spalten enthält, die Ihr Leistungsproblem möglicherweise ebenfalls lösen, empfehle ich Checkout dafür
Tags und Links angularjs performance