AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Performance: String ODER TCaption immer auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Performance: String ODER TCaption immer auslesen?

Ein Thema von xZise · begonnen am 19. Mai 2006 · letzter Beitrag vom 20. Mai 2006
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 19:31
Da ich vermutlich öfter ein Wert aus einem Textfeld (LEValue) auslesen muss, wollte ich fragen, was besser ist:
immer mit LEValue.Text
oder
zuerst LEValue.Text in String speichern und dann mit den String arbeiten?

LEValue.text wird nie verändert
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 20:14
In Zeiten von 3GHZ CPU sollte das eine Frage sein, die man sich erst dann stellt, wenn man das letzte Quentchen Performance aus seiner Applikation rausholen muss.

Bis dahin gilt: Übersichtlichkeit, Robustheit, Lesbarkeit. Sonst nichts!

Es kann übersichtlicher sein, die Eigenschaft in einer lokalen Variablen zu speichern, schneller ist das, bei gut gebauten Getter-Methoden, eigentlich nicht.

An Deinem Alter sehe ich, das Du vielleicht noch tendentiell am Anfang einer langen Programmiererkarriere stehst. Versteh mich nicht falsch, ich will nicht überheblich sein, oder von oben herab (leider passiert mir das ab und an), aber wenn deine Überlegung nicht nur theoretischer Natur ist, geht sie in die falsche Richtung.

Bitte versuche, deine Programme so elegant wie nur irgend möglich zu erstellen. Dabei ergibt sich eine gewisse Performance von selbst. Vor allen Dingen aber wird die Applikation robust.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 20:18
Ich denke (wobei ich auch finde, dass diese Abfrage vernachlässigbar ist, wenn sie nicht grade im Intervall von 1ms durchgeführt wird) der Effekt der Selbe ist, ob ich nun einen String aus einer property oder einer Variable auslese. Ansonsten einfach mal mit GetTickCount messen (wenn dieser denn genau genug sein sollte)

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 20:57
Danke erstmal

Delphi-Quellcode:
  if TryStrToInt(LEValue.Text) then begin
    if TryStrToBool(LEValue.Text) then begin

    end else if TryStrToFloat(LEValue.Text) then begin

    end;
  end else if TryStrToDate(LEValue.Text) then begin

  end else if TryStrToTime(LEValue.Text) then begin

  end;
lohnt es sich da (vielleicht auch wegen der übescihtlichkeit?).
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#5

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 21:10
Zitat von Florian Bernd:
Ansonsten einfach mal mit GetTickCount messen (wenn dieser denn genau genug sein sollte)
Mit Sicherheit nicht (bei 'ner Auflösung von "nur" 10ms) ... es sei den man führt den Code "sehr" oft aus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 21:38
Da hinter "Caption" bzw. "Text" in der Regel eine Funktion steckt wird beim Aufruf der Funktion der Rückgabewert kopiert. Bei einem Edit wird bei jedem Aufruf von "Edit.Text" der Buffer auf den String kopiert. Wenn man also den Wert öfter benötigt ist es bedeutend schneller den Wert auf eine Stringvariable zwischen zu speichern.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Performance: String ODER TCaption immer auslesen?

  Alt 19. Mai 2006, 23:37
Alzaimer hat das wichtigste gesagt, das was danach kam, das hat er wohl noch nicht gelesen. Da wird er wohl demnächst einen Kommentar dazu abgeben. 8) Meiner kommt jetzt schon (und bitte nicht direkt drohen, vom Dach zu springen oder so ähnlich ) : ich sehe eine Ansammlung von Try and Error in Sphagetticode-Form. Also : Könnte das nicht gehen, dann probiere was anderes. Geht nicht ? Dann probiere wieder was anderes. Solange eben bis es geht. Angenommen, in dem String steht 1 drin. Erste Zeile überprüft auf integer. Die zweite auf boolean. Wer sagt jetzt, daß die 1 kein real ist ? Erst dann nämlich wird auch auf real geprüft. Dis Prüfung auf Boolean liefert ja schon einen Fehler, sofern "true" erwartet wird. Dabei wäre die 1 ein gültiger real. Wenn ich da jetzt auf die Schnelle alles richtig gesehen habe. Das nennt man deshalb Sphagetti - Code, weil man den Anfang zwar sieht, aber nicht mehr wo das Ende rauskommt und was dazwischen passiert. Die Frage, was schneller ist, die verliert in dem Zusammenhang jegliche Bedeutung !
Gruß
Hansa
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Performance: String ODER TCaption immer auslesen?

  Alt 20. Mai 2006, 12:50
Zitat von Hansa:
Alzaimer ... das hat er wohl noch nicht gelesen. Da wird er wohl demnächst einen Kommentar dazu abgeben. 8)
Woher weiss er das?

Hier soll offensichtlich ein String umgewandelt werden, entweder in eine Zahl, Datum, etc. Da würde ich eine Funktion definieren, zumal einem diese Problemstellung doch häufiger unterkommt. Die Funktion könnte so aussehen:
Delphi-Quellcode:
Function ConvertString(Const s: String): Variant;
Var
  i: Integer;
  r: Double;
  d: TDateTime;
  b: Boolean;

Begin
  If TryStrToInt(s, i) Then Begin
    Result := i;
    Exit
  End;
  If TryStrToFloat(s, r) Then Begin
    Result := r;
    Exit
  End;
  If TryStrToDateTime(s, d) Then Begin
    Result := d;
    Exit
  End;
  If TryStrToBool(s, b) Then Begin
    Result := b;
    Exit
  End;
  Result := s;
End;
Und dann der eigentliche Aufgruf...
MyValue := ConvertStringToAny (LEValue.Text); Somit wird auch die ursprüngliche Frage eigentlich überflüssig: Der Zugriff auf die Property ist auf das notwendige Minimum reduziert, die 'Forderung' nach Übersichtlichkeit wurde erfüllt. Alle sind zufrieden.



Ach, eins noch: Ich kenn den Spaghetticode aus Basic-Zeiten. Bei einer visuellen Codeanalyse mit entsprechender Software wurden die Goto's durch Linien im Code veranschaulicht. Bei schlechter Strukturierung sah das Ganze dann eben aus wie eine Portion Spaghetti. Ohne Soße.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz