Einzelnen Beitrag anzeigen

BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#23

AW: Stringgrid, Zeile automatisch an Textgrösse anpassen

  Alt 19. Mai 2015, 19:07
1. kein unnötiger Funktionsaufruf (pro Schleifendurchgang)
Wieso? Ist bei Math.Max doch auch nicht. (inline )
Bei der Verwendung von Math.Max müssen wesentlich mehr Arbeitschritte durchlaufen werden, als mit der Variante mit der einfachen If-Abfrage

Wir benötigen lMaxRowHeight:
Das erbibt die zwei Möglichkeiten:

1. mit Math.Max():
Delphi-Quellcode:

  lMaxRowHeight := Math.Max(lTextHeigth,lMaxRowHeight);
.
2. mit einer einfachen IF-Abfrage:
Delphi-Quellcode:
  if (lTextHeigth > lMaxRowHeight) then
   begin
    lMaxRowHeight := lTextHeigth;
   end;
Bei Version2 wird bei jedem Schleifendurchlauf die IF-Abfrage durchgeführt und nur bei "wahr" lMaxRowHeight ein neuer Wert zugewiesen.

Bei Version1 wird bei jedem Schleifendurchlauf die Funktion Max() aufgerufen, welche mit zwei Parametern bestückt ist, welche mit übergeben werden müssen.
In der Max-Funktion wiederum wird eine If-Abfrage durchgeführt und der Variablen Result egal ob "Wahr" oder "Falsch" auf jeden Fall ein Wert zugewiesen. Und auch der Variablen lMaxRowHeight wird bei jedem Schleifendurchlauf das Resultat der Funktion zugewiesen.

Das sind doch unnötige Arbeitsschritte/Rechenoperationen/Speicherplatzzuordnungen.

Math ist klein, hat nichtmal einen Initializations-Abschnitt und über die VCL oder andere (Fremd)Komponenten ist sie eh oft bereits eingebungen, also warum dann nicht nutzen?
Es mag zwar wie Erbsenzählerei klingen, aber alles was unnötig ist ist eben unnötig. Und viele Erbsen ergeben einen sättigenden Eintopf.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat