Функция возвращает число миллисекунд. Значит, как я понимаю, всё дело занимает меньше миллисекунды. Чтоб занимало больше миллисекунды можно выполнять оба кода в цикле.
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
const A:integer=1; b:integer=2; c:integer=3; d:integer=4; n=100000000; var Form1: TForm1; e:integer; implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender : TObject); var Old,New : cardinal; I:integer; begin Old := GetTickCount; for i:=1 to n do If A=1 then If B=2 then If C=3 then If D=4 then E:=5; New := GetTickCount; Label1.Caption := IntToStr(New-Old); label3.caption:=inttostr(old); label4.caption:=inttostr(new); end;
procedure TForm1.Button2Click(Sender : TObject); var Old, New : cardinal; i:integer; begin Old := GetTickCount;
for i:=1 to n do If (A=1) and (B=2) and (C=3) and (D=4) then E:=5; New := GetTickCount; Label2.Caption := IntToStr(New-Old); label3.caption:=inttostr(old); label4.caption:=inttostr(new);
end;
end.
|
Если пощелкать по кнопкам несколько раз, видно, что операция занимает разное количество временив заивисмости, наверное, от состояния системы.
У меня лично разница между двумя кодами была неощутимой. Обе кнопки выдавали результат в пределах примерно 609-678. То одна была быстрее, то другая.
А я почему-то думал, что первый вариант должен быть быстрее...
P.S. Demo, твой кольт был быстрее... |