erikphilips
15-11-2003, 11:15 AM
Alright so i read that trunc is "slow" so I did some testing. Interestingly enough it is.
procedure TForm1.Button1Click(Sender: TObject);
var
endTick: integer;
count: integer;
i: integer;
j: real;
begin
edit1.Text := 'started';
j := 2.4;
endTick := GetTickCount + 5000;
count := 0;
repeat
i := trunc(j);
count := count + 1;
until (getTickCount > endTick);
edit1.Text := intToStr(count);
end;
There is a little about a 3% +/- change each time i ran it. Anway:
RoundL = a function using the round below
RoundO = a created object with a function using the round below
Trunc = 183,419,960 / ~5000 = 36,683/ms
Round(j - 4.9999999999) = 266,647,840 / ~5000 = 53,329/ms
RoundL = 157,383,577 / ~5000 = 31,376/ms
RoundO = 168202037 / ~5000 = 33,640/ms
So basically to get speed i have to manually type the round function in each spot i need to use it. It sounds crazy but it seems to be the only solution i've found.
procedure TForm1.Button1Click(Sender: TObject);
var
endTick: integer;
count: integer;
i: integer;
j: real;
begin
edit1.Text := 'started';
j := 2.4;
endTick := GetTickCount + 5000;
count := 0;
repeat
i := trunc(j);
count := count + 1;
until (getTickCount > endTick);
edit1.Text := intToStr(count);
end;
There is a little about a 3% +/- change each time i ran it. Anway:
RoundL = a function using the round below
RoundO = a created object with a function using the round below
Trunc = 183,419,960 / ~5000 = 36,683/ms
Round(j - 4.9999999999) = 266,647,840 / ~5000 = 53,329/ms
RoundL = 157,383,577 / ~5000 = 31,376/ms
RoundO = 168202037 / ~5000 = 33,640/ms
So basically to get speed i have to manually type the round function in each spot i need to use it. It sounds crazy but it seems to be the only solution i've found.