Bien sûr, vous pouvez être sûr, parce que c'est documented. Est le compilateur qui le résout à la compilation, donc il n'y a pas de surcharge supplémentaire sur l'appel de fonctions surchargées dans Delphi.
[Modifier]
J'ai fait un petit test pour vous:
var
j: Integer;
st: string;
procedure DoNothing(i: Integer); overload;
begin
j := i;
end;
procedure DoNothing(s: string); overload;
begin
st := s;
end;
procedure DoNothingI(i: integer);
begin
j := i;
end;
procedure TForm2.Button1Click(Sender: TObject);
const
MaxIterations = 10000000;
var
StartTick, EndTick: Cardinal;
I: Integer;
begin
StartTick := GetTickCount;
for I := 0 to MaxIterations - 1 do
DoNothing(I);
EndTick := GetTickCount;
Label1.Caption := Format('Overlaod ellapsed ticks: %d [j:%d]', [EndTick - StartTick, j]);
StartTick := GetTickCount;
for I := 0 to MaxIterations - 1 do
DoNothingI(I);
EndTick := GetTickCount;
Label1.Caption := Format('%s'#13'Normal ellapsed ticks: %d [j:%d]', [Label1.Caption, EndTick - StartTick, j]);
end;
Résultat: Presque tout le temps 31 Tiques (millisecondes) pour les deux sur ma machine dev, prend parfois la surcharge seulement 16 tiques .
+1 vous m'avez battu :) –
Droit. Il y a un temps de compilation (négligeable), mais aucun à l'exécution. –
Le code compilé ne se soucie pas du nom mais de l'adresse de la bonne procédure à appeler. Puisque cette adresse de traduction => adresse est faite à la compilation, à la fin, à l'exécution, c'est exactement la même chose que d'avoir des noms différents. –