Du greifst aber nicht zufällig auf Canvas.Pixels zu?
Wenn doch, dann kannst du Funktionsaufrufe optimieren wie du willst ... Pixels ist sowas von lahm, da fallen die 1-2 CPU-Ticks auch nicht mehr auf.
TCanvas.ScanLine ... gibt zu
Pixels und ScanLine auch schon genügend Themen, welche man sich gerne durchlesen könnte.
Und ja, wenn immer wieder das Selbe berechnet wird und dabei immer das Selbe rauskommt, dann ist es natürlich schneller, wenn es nur einmal berechnet wird.
Funktionsaufrufe sind "Sprünge" und wenn dann auch noch "wenig" in der Funktion/Prozedur gemacht wird, dann kann sich das rumgespringe schon etwas auf die Zeit auswirken.
Inline-Funktionen
Delphi-Quellcode:
function xyz(i, i2: Integer): Integer; inline;
begin
Result := i * i2;
end;
Solch eine Inlinefunktion ist fast wie ein Makro ... hier wird an der Stelle des Aufrufs nicht zur Prozedur gesprungen, sondern der enthaltene Code (wenn möglich) direkt da eingebaut, also so, als wenn man den Code direk dort hingeschrieben und nicht in eine Funktion ausgelagert hätte.
Und wie im anderen Thread schon erwähnt wurde, gibt es verschiedene Performance-Tools, welche einem die "Engstellen" nennen.
Oder man misst selber nach, indem man an verdächtigen Stellen die Zeit stoppt.