Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Stringlänge parsen (https://www.delphipraxis.net/193739-stringlaenge-parsen.html)

haentschman 5. Sep 2017 09:47

AW: Stringlänge parsen
 
[OT]
:cheer: Ich hole mal das Popcorn...
[/OT]

TiGü 5. Sep 2017 09:57

AW: Stringlänge parsen
 
Auch wenn ich auch glaube, dass hier am falschen Ende gespart wird, möchte ich nochmal auf meinen Beitrag #20 zurückkommen.
http://www.delphipraxis.net/1380280-post20.html

Hier zeige ich im Screenshot explizit die Funktionsaufrufe, die am meisten Zeit benötigen.
Da kann man dann anfangen zu optimieren, indem man nicht für jeden String die ganzen Objekte neu erstellt, sondern nur einmalig und damit die größte Breite ermittelt.

EWeiss 5. Sep 2017 10:05

AW: Stringlänge parsen
 
Zitat:

Zitat von TiGü (Beitrag 1380340)
Auch wenn ich auch glaube, dass hier am falschen Ende gespart wird, möchte ich nochmal auf meinen Beitrag #20 zurückkommen.
http://www.delphipraxis.net/1380280-post20.html

Hier zeige ich im Screenshot explizit die Funktionsaufrufe, die am meisten Zeit benötigen.
Da kann man dann anfangen zu optimieren, indem man nicht für jeden String die ganzen Objekte neu erstellt, sondern nur einmalig und damit die größte Breite ermittelt.

Dein Code Beispiel werde ich auch beherzigen und meinen Ansprüchen gerecht umsetzen.
Danke nochmal für den Ansatz.

gruss

TiGü 5. Sep 2017 10:09

AW: Stringlänge parsen
 
Zitat:

Zitat von EWeiss (Beitrag 1380343)
Dein Code Beispiel werde ich auch beherzigen und meinen Ansprüchen gerecht umsetzen.
Danke nochmal für den Ansatz.

Du musst einfach viel mehr Sachen (zwischen)merken.
Auch der zweifache Aufruf von GetDesktopWindow ist ja Quatsch, das ändert sich ja innerhalb der beiden Aufrufe nicht.
Das kannst du auch zwischenspeichern.
Wahrscheinlich musst du darauf nicht mal GetDC holen, weil du das davor wahrscheinlich schon drölf mal machst.

bra 5. Sep 2017 10:35

AW: Stringlänge parsen
 
Du merkst schon, dass du dir laufend selbst widersprichst, oder?

Da ist sauberes Programmieren nicht so wild:
Zitat:

Zitat von EWeiss (Beitrag 1380283)
mag ja sein das ich ein zwei Sachen nicht initialisiert habe.. meine Regel ist solange der Compiler nicht meckert kompiliert
und alles rund läuft sollte das schon gut sein.

Dort muss aber jede Mikrosekunde rausoptimiert werden, beim Anzeigen von Menüs, die vielleicht 50 (?) Einträge haben? Ernsthaft? :roll:

Zitat:

Zitat von EWeiss (Beitrag 1380326)
Wenn man hier schon anfängt zu schludern dann erhöht sich die Performance sehr schnell vor allem dann wenn man ein Fenster in Millisekunden Bereich
100fach öffnen und schließen muss mit allen seinen Eigenschaften und Controls die sich darauf befinden.


TigerLilly 5. Sep 2017 10:36

AW: Stringlänge parsen
 
TiGü gibt ja schon gute Tipps. Optimieren hat erst Sinn, wenn man weiß, wo die Zeit tatsächlich liegen bleibt. Worauf ich hinauswill, ist, dass es meist mehr bringt, Dinge grundsätzlich umzubauen.

Ich sehe im Code zB einen try/finally Block. Wenn es gelingt, den wegzulassen oder außerhalb einer Schleife in der aufrufenden Methode zu platzieren, dann hast du viel mehr gewonnen, als das Optimieren der Länge-suchen.

Kandidaten für´s Optimieren sind in dieser Reihenfolge:
1) Schleifen
2) try/finally/except
3) Lese/Schreiboperationen/Datenbankzugriffe
4) Prozeduraufrufe

Änderungen hier betreffen meist größere Codeblöcke --> Presslufthammer :-)

Delphi-Laie 5. Sep 2017 15:04

AW: Stringlänge parsen
 
Zitat:

Zitat von Glados (Beitrag 1380260)
Zitat:

Ich möchte die gesamte länge eines String parsen\vergleichen bsp. von 30 Einträgen und den längsten davon
verwenden um mein Sub Menu auf die weite auszurichten.
QuickSort und dann das hier vielleicht?

Vorheriges Sortieren lohnt sich aber nur bei wiederholten Suchvorgängen!

EWeiss 7. Sep 2017 16:17

AW: Stringlänge parsen
 
Auch mit meinem Spagetti Code habe ich das SubMenu fertiggestellt zumindest was die Einträge(höhe) angeht.
Nun noch die weite der Strings ermitteln und die weite entsprechend anpassen.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Seite 6 von 6   « Erste     456   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz