我们来看看下面一段代码所使用的时间:
Function demo_timeq();
Begin
a := array();
for i:= 0 to 99 do
a[i] := demof();
return a;
End;
function demof();
begin
a := 100;
b := rand(100,100);
b := select * from infotable 44 of "SZ000002" where ["截止日"]>20030101 end;
return a+1;
end
主要关注代码中的粗体部门,[]所耗的时间是0.077,如果我们将它换成:
b := select * from infotable 44 of "SZ000002" end;
b :=select * from b where ["截止日"]>20030101 end; //内存中的表
[]所耗的时间是0.0081,降低了很多,说明基于服务器端的一张表格做select语句中,频繁的使用[],效率是比较低的。所以需要多次利用的数据,可以先从数据仓库中取出然后操作。
Function demo_timeq();
Begin
mtic;
b := rand(100,10000);
a := array();
for i:= 0 to 99 do
a[i] := demof(b);
return mtoc;
End;
function demof(b);
begin
a := 100;
if ifnil(b[10]) then c:=1;
return a+1;
end
返回优化信息我们看到if和table花销时间是比较多的,table开销主要是[]运算的开销。直接运行时间是0.3474,我们删掉粗体字标示的语句后所需要的时间是0.0882,如果换成:
if ifnil(b[10][0]) then c:=1;
时间和删除该句是差不多的,为0.0966。为什么?因为b[10]取的是10000个的一维数组!