vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Performance Fragen 
Autor: Bazi
Datum: 22.06.17 12:18

Hallo,
ich arbeite gerade an einem Programm das auf Windows basierten Tablets laufen soll.

Basis ist ein typisiertes Dataset mit rund 15 Datatables.

In der GUI habe ich derzeit ein MainForm, in dem über eine Combobox Ansichten geschaltet werden, und je nach Ansicht Panels mit den zugehörigen DataGridviews und anderen Steuerelementen sichtbar geschaltet werden.
Nun stelle ich fest dass nach Abschluss des Form.Show Events noch etwa 10 Sekunden vergehen bis ich auf die Form zugreifen kann. Bei jeglichem Versuch vorher kommt eine Meldung das Programm sei ausgelastet.

Ich habe die meisten Sachen in diese eine Form gepackt damit im laufendne Betrieb nicht ständig andere Forms geladen werden müssen. Dachte dies sei performanter.

In Summe habe ich 7 Forms die ich sonst gehabt hätte zu einer zusammengefasst, auf der ich dann halt auch sämtliche Steuerelemente habe.

Als weitere Alternative wäre natürlich die maximale Anzahl der jeweils gleichzeitig benötigten Steuerelemente zu ermitteln und diese je nach Ansicht anders zu binden bzw. zu coden.

Wie seht Ihr das?

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Manfred X
Datum: 23.06.17 11:17

Hallo!

Deine Anfrage beinhaltet keine relevanten Informationen.

Datenbanksystem? Lokal? Remote?
zu ladendes Datenvolumen?
Wo liegt die Verzögerung? Beim DB-Zugriff? Bei der internen Datenaufbereitung?
Läuft der Abfrage-Vorgang in einem Hintergrund-Thread?
Sind während des Bindens der Controls deren Aktualisierungen "suspended"?
usw.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Bazi
Datum: 23.06.17 13:30

Hallo Manfred,

die Frage war allgemeiner Natur, was generell performanter sein dürfte.

Im konkreten Fall arbeite ich lokal ohne DB auf einer xml-Datei. Dateigröße jetzt bei 6.888KB

Ich war der Meinung das es schneller wäre alles in einem Form zu haben, da dann nicht ständig Forms geladen werden müssen.

Kann natürlich auch sein dass das ein Trugschluss ist, da viele Controls geladen werden ohne sie in diesem Moment zu brauchen.

Mich wundert dass nach feuern des Form.Shown-Eventes noch so lange ´Zeit vergeht in der ich nicht auf das Form zugreifen kann.

Das Tablet auf dem alles läuft ist ein Lenovo Thinkpad mit Windows 10 und 2GB Arbeitsspeicher.

Gruß Chistian

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Manfred X
Datum: 23.06.17 17:11

Hallo!

Um eine so (relativ) große XML-Datei zu laden, wird Rechen-Zeit benötigt -
auch abhängig von der Art und Anzahl der erforderlichen Datenkonvertierungen.
Ich vermute, es gibt kaum Optimierungs-Potentiale.
Stelle das Programm auf die Datenhaltung in einer SQL-DB um und teste neu.

Beitrag wurde zuletzt am 23.06.17 um 17:17:02 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Bazi
Datum: 24.06.17 17:51

OK, danke für den Hinweis.

Dann stelle ich mal auf SQLight um.
Mit den anderen DB´s habe ich keine Erfahrung.

Zur Grundsätzlichen Frage, mehrere Forms oder alles in einer Form, bleibt sich das wurscht?

Gruß Christian.

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Manfred X
Datum: 24.06.17 20:35

Die Performance hängt vom effizienten Zusammenwirken/Gestalten
mehrerer Faktoren ab.

Wenn beim Erstellen einer Formularinstanz stets zahlreiche
Controls erzeugt (und gefüllt/gebunden) werden müssen, verlangsamt das
den Vorgang. Das gilt auch für das Redrawing der Form.
Günstiger kann es deshalb sein, wenn Instanzen von Controls erst bei
Bedarf (im Code dynamisch) generiert werden.

Falls man zahlreiche Controls parallel nutzt, ist vor allem zu beachten,
daß die Ereignisverarbeitungen sich nicht gegenseitig ins Gehege kommen
(z.B. Ereigniskette: Die Verarbeitng eines Ereignisses kann weitere
Ereignisse auslösen - Kaskadeneffekt).

Auch die Führung des Programm-Benutzers ist von Bedeutung.
Er sollte stets die Daten und Optionen angeboten bekommen,
die er tatsächlich für den nächsten Schritt benötigt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Bazi
Datum: 24.06.17 22:53

werden Controls die ausgeblendet sind, also visible = false, auch schon gebunden und befüllt oder erst wenn sie sichtbar sind?

Da dürfte der Performanceverlust eigentlich gering bleiben, da ja das Drawing entfällt.

Erstmal Danke für Deine Unterstützung.
Setze die nächsten Tage erstmal den Umbau auf eine echte DB um, und ändere die Speicherung meiner Bilddateien von Dataset als Metadaten zu speichern im Dateisystem. Dann bleibt die Datenbank schmäler.

Gruß Christian

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Manfred X
Datum: 25.06.17 10:34

Die internen Datenklassen werden befüllt, sobald im Code
eine Abfrage aus einer externen Datenquelle gestartet worden ist.
Mit den Controls hat das nichts zu tun. Es kommt auf die Gestaltung
der Abfrage an. Bei einer Datenbank kann man regeln, ob viele
Daten durch eine Abfrage geholt werden, oder ob man mit kleinen
bedarfsgerechten "Portionen" arbeitet (Nachladen).

Die Datenbindung von Controls wird durchgeführt, sobald und
wie sie eingerichtet worden ist - es sei denn, die Bindung wird im
Code zeitweise suspendiert. Die Sichtbarkeit von Controls spielt
dabei direkt keine große Rolle.

Visibilität ist relevant für das "Redrawing" der Form. Das kann
für die Performance beim Laden eine indirekte Bedeutung haben, wenn
währenddessen die Datenanzeige in den bereits gebundenen Controls oft
aktualisiert werden muß. Diese Performance-Einflüße steuert man durch
temporäre Suspendierung oder völlige Unterbrechung der Datenbindung.

Wichtig ist auch, die Ereignisverarbeitung der Controls, der
Bindeklassen und der internen Datenquellen im Auge zu behalten.
Falls während des Lade-/Binde-Vorgangs Ereignisse ausgelöst und im Code
bearbeitet werden, kann das eine erhebliche Verzögerungswirkung haben.
Eventuell müssen rechenzeitintensive Routinen durch Setzen/Abfragen
eines "Sperr-Boolean" vorübergehend "abgestellt" werden.

Beitrag wurde zuletzt am 25.06.17 um 10:53:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performance Fragen 
Autor: Bazi
Datum: 26.06.17 18:38

OK, soweit alles Klar.
Danke für die Infos.

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel