次のコードがあります。
procedure p1(const s:string);
var i,l:integer;
function skip:boolean; //inline not possible
begin
while (i<=l) and (s[i]<=' ') do inc(i);
result:=i<=l;
end;
begin
//skip() is VERY often called here
end;
procedure p2(const s:string);
function skip(const s:string;var i:integer;l:integer):boolean;inline;
begin
while (i<=l) and (s[i]<=' ') do inc(i);
result:=i<=l;
end;
var i,l:integer;
begin
//skip(s,i,l) is VERY often called here
end;
どちらがいいですか?最初のものは読みやすいですが、skip() をインライン化できないため、遅くなります。2 番目の方法は高速ですが、毎回すべてのパラメーターを指定する必要があるため、非常に見栄えが悪くなります。別の読みやすく高速な解決策を知っていますか?