最近想写一个解释性语言,用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)
快,但是其实都差不多