Also, ich baue eine WPF-App und machte heute eine Test-Bereitstellung, und festgestellt, dass es ziemlich schlecht funktioniert. Ich war überrascht, da wir visuelle Effekte oder Animationen nicht wirklich machen.WPF: Verbessern der Leistung für das Ausführen auf älteren PCs
Ich auf zwei Maschinen eingesetzt: die schnellste und die langsamste, die die Anwendung ausführen muss (der langsamste PC hat einen Intel Celeron 1,80 GHz mit 2 GB RAM). Die Anwendung lief auf der schnelleren Maschine ziemlich gut, war aber auf der langsameren Maschine abgehackt. Und wenn ich "abgehackt" sage, bedeutet das, dass der Cursor gesprungen ist, obwohl er gerade über jedes geöffnete Fenster der App, die den Fokus hatte, gesprungen ist.
Ich öffnete das Task-Manager-Fenster Leistung und konnte sehen, dass die CPU-Auslastung sprang, wenn die App den Fokus hatte und der Cursor sich darüber bewegte. Wenn ich einem anderen (z. B. Excel) den Fokus gab, ging die CPU-Nutzung nach einer Sekunde zurück. Dies passierte auf beiden Maschinen, aber der Hacking war nur auf der langsameren Maschine bemerkbar. Ich hatte nur sehr begrenzte Zeit, um an den Deployment-Maschinen herumzubasteln, also habe ich nicht viele detaillierte Tests durchgeführt.
Die App läuft gut auf meinem Entwicklungscomputer, aber ich sehe auch die CPU bis zu 10% dort Spike, nur den Cursor über das Fenster laufen.
Ich habe das WPF-Leistungstool von MS heruntergeladen und habe damit (auf meinem Dev-Rechner) herumgebastelt. Die docs sagen, dass dies über die "Frame Rate" Metrik im Perforator-Tool:
Für Anwendungen ohne Animation, dieser Wert nahe 0.
sein sollte Die App ist keine schwere Animation zu tun, Die Bildrate bleibt jedoch nahe 50, wenn sich der Cursor über einem Fenster befindet. Die Bildschirme, auf denen ich getestet habe, haben Spaltenüberschriften in einem Raster, die "hervorgehoben" sind, und Schaltflächen, die Farbe und Aussehen ändern, wenn sie gescrollt werden. Wenn Sie die Maus auf leere Bereiche der Fenster bewegen, werden die gleiche Bildrate und CPU-Auslastung angezeigt (scheint nicht mit diesen kleineren Animationen zusammenzuhängen).
(Ich bin auch nicht in der Lage, herauszufinden, wie man nur die beiden Standard-Tools - Perforator und Visual Profiler - in das WPF-Performance-Tool installiert. Das ist wahrscheinlich eine separate Frage).
Ich habe auch Redgates Profiling-Tool, aber ich bin mir nicht sicher, ob das die Renderleistung beleuchten kann.
Also, ich weiß, das ist nicht eine einfache Sache, ohne Besonderheiten oder Beispielcode (die ich nicht veröffentlichen kann) zu beheben. Meine Fragen sind:
- Was sind einige allgemeine Dinge für (oder zu vermeiden) im Code suchen Leistung zu verbessern?
- Welche Schritte kann ich mit dem WPF-Tool durchführen, um das Problem einzuschränken?
- Ist die oben aufgeführte PC-Spezifikation (Intel Celeron 1,80 GHz mit 2 GB RAM) zu langsam, um selbst Vanille-WPF-Anwendungen ausführen zu können?