Einzelnen Beitrag anzeigen

atc

Registriert seit: 3. Dez 2010
17 Beiträge
 
#5

AW: Frage zur inline Optimierung

  Alt 5. Jun 2012, 15:49
In while- und repeat-Schleifen in der Bedingung benutzte Funktionen können nicht inline eingebunden werden.
Doofe Frage vielleicht, aber warum nicht?

Etwas schneller sollte es übrigens sein, wenn du neof außerhalb deiner Funktion definierst und nicht darin. Dann kann der Compiler oft besser optimieren.
Das habe ich schon probiert und macht so gut wie keinen Unterschied.

Gibt es sonst noch eine andere Möglichkeit? Ich möchte ungerne alle 1-zeiligen Funktionsaufrufe manuell in die Hauptfunktion copy und pasten


Edit:
Bei folgendem Code funktioniert das inlining übrigens perfekt:
Delphi-Quellcode:
procedure p3(const s:string);

  function eof(i,l:integer):boolean;inline;
  begin
    result:=i>l;
  end;

var i,l:integer;
begin
  i:=1;
  l:=length(s);
  while true do
  begin
    if eof(i,l) then break;
    //...
    inc(i);
  end;
end;
Das ist aber natürlich ziemlich unschön...

Geändert von atc ( 5. Jun 2012 um 16:04 Uhr)
  Mit Zitat antworten Zitat