Как сравнить быстродействие алгоритмов
Falk0ner, вс, 06/07/2008 - 15:35.
Если вас сколько-нибудь интересует скорость работы вашей программы, то нужно смерить скорость алгоритмов и сравнивать их. Здесь я привожу пример, сравнивающий четыре способа возведения 2 в степень 30.
uses Math;
procedure TForm1.Button1Click(Sender: TObject);
var
Res, Exponent: integer;
Res1: real;
t, i: integer;
begin
Exponent := 30;
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res := 1 shl Exponent;
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := LdExp(1, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := IntPower(2, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := Power(2, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Res, Exponent: integer;
Res1: real;
t, i: integer;
begin
Exponent := 30;
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res := 1 shl Exponent;
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := LdExp(1, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := IntPower(2, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
Application.ProcessMessages;
t := GetTickCount;
for i := 1 to 1000000 do
Res1 := Power(2, Exponent);
Form1.Caption := Form1.Caption + ' ' +
IntToStr(GetTickCount - t);
end;
Автор советов: Даниил Карапетян
e-mail: delphi4all@narod.ru
Автор справки: Алексей Денисов
e-mail: aleksey@sch103.krasnoyarsk.su
Отправить комментарий