我写了一个VCL控件,提供一个Request的方法,定义如下:
function Request(param:pointer):bool; std另外提供一个如下的WINAPI
shi式的函数function VCLRequest(param:pointer):bool; stdcall;供一个dll回调,我用gettickcount分别计时,结果发现调用VCLRequest时不时出现15-16ms的延时,而此时vcl的Request方法则几乎没有延时,百思不得其解
function Request(param:pointer):bool; std另外提供一个如下的WINAPI
shi式的函数function VCLRequest(param:pointer):bool; stdcall;供一个dll回调,我用gettickcount分别计时,结果发现调用VCLRequest时不时出现15-16ms的延时,而此时vcl的Request方法则几乎没有延时,百思不得其解
var
dd:cardinal;
begin
dd:=GetTickCount;
result:=VCLObject.Request(param);
dd:=GetTickCount-dd;
//这里dd是VCL外部计算的延时
end;function VCLObject.Request(param:pointer;):bool;
var
dd:cardinal;
begin
dd:=GetTickCount;
......//request代码
dd:=GetTickCount-dd;
//这里dd是VCL内部计算的延时,按道理这个dd和那个dd应该一样,但结果是
//上面那个间或出现15-16ms的延时,而下面这个dd则几乎没有
end;
这个好象奇怪哦,就是从一个函数转到vcl类方法(函数指针类型不一样,但指针跳转由borland用汇编实现了,应该不可能寻址这么慢啊),跟踪也没有用