- Код: Выделить всё
program test_fpc;
{$APPTYPE CONSOLE}
uses windows;
type
pTVector = ^TVector;
TVector = record
x, y, z: single;
end;
procedure le_CrossVector(Vector1, Vector2, VectRes: pTVector); overload;
begin
VectRes^.X := (Vector1^.Y * Vector2^.Z) - (Vector1^.Z * Vector2^.Y);
VectRes^.Y := (Vector1^.Z * Vector2^.X) - (Vector1^.X * Vector2^.Z);
VectRes^.Z := (Vector1^.X * Vector2^.Y) - (Vector1^.Y * Vector2^.X);
end;
function le_CrossVector(Vector1, Vector2: TVector): TVector; overload;
begin
result.X := (Vector1.Y * Vector2.Z) - (Vector1.Z * Vector2.Y);
result.Y := (Vector1.Z * Vector2.X) - (Vector1.X * Vector2.Z);
result.Z := (Vector1.X * Vector2.Y) - (Vector1.Y * Vector2.X);
end;
procedure le_CrossVector(var Vector1, Vector2, VectRes: TVector); overload;
begin
VectRes.X := (Vector1.Y * Vector2.Z) - (Vector1.Z * Vector2.Y);
VectRes.Y := (Vector1.Z * Vector2.X) - (Vector1.X * Vector2.Z);
VectRes.Z := (Vector1.X * Vector2.Y) - (Vector1.Y * Vector2.X);
end;
var
a,b,c: TVector;
i,g: integer;
begin
g :=0;
i := 0;
g:=GetTickCount;
for i:=0 to 1000000000 do le_CrossVector(b,c,a);
writeln(GetTickCount-g);
writeln;
g := 0;
i := 0;
g:=GetTickCount;
for i:=0 to 1000000000 do le_CrossVector(b,c);
writeln(GetTickCount-g);
readln;
end.