Never too old to learn.

pascal语句测速

Posted on By Andy Zhu

最近想写一个解释性语言,用pascal实现,故测试一下pascal中一些语句的速度:

uses sysutils;
var
 i,a:longint;
 time:extended;
begin
 a:=0;
 time:=now;
 for i:=1 to 2000000000 do
  a:=a+1;
 writeln(now-time:0:20);
 a:=0;
 time:=now;
 for i:=1 to 2000000000 do
  inc(a);
 writeln(now-time:0:20);
 a:=0;
 time:=now;
 for i:=2000000000 downto 1 do
  a:=a+1;
 writeln(now-time:0:20);
 a:=0;
 time:=now;
 for i:=2000000000 downto 1 do
  inc(a);
 writeln(now-time:0:20);
end.

测试结果:

第一次:
0.00005339120252756402
0.00005483796121552587
0.00005541666905628517
0.00005381944356486201
第二次:
0.00005449073796626180
0.00005552083166548982
0.00005503472493728623
0.00005510416667675599
第三次:
0.00005636573769152164
0.00005515046359505504
0.00005370370490709320
0.00005403935210779309
第四次:
0.00005414351471699774
0.00005545138992602006
0.00005377314664656296
0.00005420138768386096
第五次:
0.00005349537241272628
0.00005505786975845695
0.00005414352199295536
0.00005329860869096592

可以看出,a:=a+1在大多数情况下比inc(a)快,但是其实都差不多