Frage

Beim Versuch, das Aussehen einer alten C ++ Builder / Delphi-Anwendung zu modernisieren, ich visuelle Themen erlaubt ( visuelle Stile ) und wurden nur überrascht, wie viel von einem Performance-Einbußen Themen hinzugefügt. Zum Beispiel für unsere primäre Setup-Seite (einen 11-Registerkarte 200-Kontroll Monster Dialog, die wir aus Gründen der Entwicklungszeit und Umschulungskosten nicht sofort wiederholen möchten):

  • Ohne Themen erlaubt: ~ 0,1 s , um die Form und ihre Kontrollen zu konstruieren (wie von Queryperformancecounter gemessen), ~ 0,9 sec aus dem Menüpunkt Form Wesen klicken gezeigt (wie durch Stoppuhr gemessen). Nicht wirklich spürbar an den Endverbraucher.
  • Mit Themen erlaubt: ~ 0,6 s , um die Form und ihre Kontrollen zu konstruieren, ~ 1,5 s aus dem Menüpunkt in das Formular angezeigt wird. Sehr auffällig an den Endverbraucher.

ich ähnliche Ergebnisse sowohl auf einem Windows XP-Desktop und Windows 7 VM.

Ich stelle fest, dass es Schritte, die ich diesen speziellen Fall zu verbessern nehmen könnte (wie träge der Dialog des Tabs geladen oder komplett neu zu gestalten), aber es ist typisch für Themen wie einen spürbaren Leistungseinbußen hinzufügen? Gibt es einfache Vorschläge zur Vermeidung dieser Leistungseinbußen?

War es hilfreich?

Lösung

Wow. Ich bin mir nicht sicher, ob ich jemals 200 Kontrollen auf einer einzigen Form gehabt haben. Hier sind ein paar Vorschläge.

  • Dies könnte ein Sonderfall, in dem Sie den Dialog einmal beim Start der Anwendung und zeigt sie erstellt werden soll, wenn stattdessen benötigt es auf Nachfrage zu schaffen.

  • ich auch aussehen würde, was im Konstruktor oder OnShow Ereignisse passiert. Sind Sie keine Listen bevölkern, wo Beginupdate / EndUpdate wäre ein Vorteil sein?

  • Haben Sie Code in einem OnResize Ereignisse oder ähnliches haben, die mehr als einmal, dass gefeuert wird, bis die Form erstellt warten konnte und einmal ausgeführt werden?

  • Welche Art von Kontrollen verwenden Sie? Wenn Sie eine Art der Steuerung besonders langsam malt, könnten Sie in der Lage sein, es mit einer zu ersetzen, die schneller malen. Dies würde einige Tests erfordern, though.

Andere Tipps

Sie könnten versuchen, und schalten Sie Doublebuffering auf die Kontrollen, wir hatten viel das gleiche Verhalten, und es wurde etwas durch diesen Ansatz beschleunigt, aber die Leistung nicht nähern vor der Anwendung Thematisierung Unterstützung anzunehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top