Hi
Ich frage mich, ob es Geschwindigkeitsunterschiede gibt, wenn ich zwei Funktionen überlade oder einfach beide Funktionen anders benenne.
Hier mal ein Beispiel, wo es darum geht, die Länge eines Vektors zu berechnen:
Delphi-Quellcode:
interface
type
Vec3D = record
x,y,z:real;
end;
Vec2D = record
x,y:real;
end;
function dwmath_getVecLength3D(vec:Vec3D):real;
function dwmath_getVecLength2D(vec:Vec2D):real;
implementation
function dwmath_getVecLength3D(vec:Vec3D):real;
Begin
result:=sqrt(vec.x*vec.x + vec.y*vec.y + vec.z * vec.z);
End;
function dwmath_getVecLength2D(vec:Vec2D):real;
Begin
result:=sqrt(vec.x*vec.x + vec.y*vec.y);
End;
Und hier die Variante, wo die Funktionen einfach überladen werden:
Delphi-Quellcode:
interface
type
Vec3D = record
x,y,z:real;
end;
Vec2D = record
x,y:real;
end;
function dwmath_getVecLength(vec:Vec3D):real; overload;
function dwmath_getVecLength(vec:Vec2D):real; overload;
implementation
function dwmath_getVecLength(vec:Vec3D):real;
Begin
result:=sqrt(vec.x*vec.x + vec.y*vec.y + vec.z * vec.z);
End;
function dwmath_getVecLength(vec:Vec2D):real;
Begin
result:=sqrt(vec.x*vec.x + vec.y*vec.y);
End;
Bei der Überladerei geht es doch darum, daß der PC anhand der Parameterliste selbst entscheidet, welche der Funktionen zu verwenden ist. Und genau da könnte es ja sein, daß hier Zeit verloren geht. Ich muß allerdings noch mit sagen, daß der Code für die KI eines Computerspiels verwendet werden soll und ich entsprechend auf Performance achten muß.
Was meint Ihr dazu?