Einzelnen Beitrag anzeigen

atc

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

Frage zur inline Optimierung

  Alt 5. Jun 2012, 03:47
Delphi-Version: XE2
Hallo,

die folgenden Codes sollten doch eigentlich von der Laufzeit her nach dem Compilieren im Release Modus mit Optimierung identisch sein, oder nicht?
Delphi-Quellcode:
procedure p1(const s:string);
var i,l:integer;
begin
  i:=1;
  l:=length(s);
  while i<=l do
  begin
    //...
    inc(i);
  end;
end;

procedure p2(const s:string);

  function neof(i,l:integer):boolean;inline;
  begin
    result:=i<=l;
  end;

var i,l:integer;
begin
  i:=1;
  l:=length(s);
  while neof(i,l) do
  begin
    //...
    inc(i);
  end;
end;
Sind sie aber leider nicht. p2 ist ungefähr 3x langsamer. Delphi erkennt das Schlüsselwort inline zwar, denn ohne dieses ist p2 ungefähr 10x langsamer.
Aber warum macht der Compiler aus p2 nicht einfach p1? Das verstehe ich gerade nicht. Es muss doch nur das Result beim Funktionsaufruf eingesetzt werden.
  Mit Zitat antworten Zitat