C
com
Unregistered / Unconfirmed
GUEST, unregistred user!
做个测试先[8D]
如下程序只是为了说明try except end 会给程序增加多大开销,
你别吹毛求疵说: 我考这也用try except.
我对一些人的灌水本事真是怕了,所以不得不先声明一下.[!]
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
tick : Cardinal;
begin
tick := GetTickCount;
for i := 0 to 99999999 do
try
if 'asdfkl;jaskl;dfjaskl;dfjl;' = 'asdfklasjfsh' then
ShowMessage('adf');
finally
end;
Label1.Caption := IntToStr(GetTickCount - Tick);
end;
try finally 耗时 1900 毫秒
try except 耗时 570 毫秒
没有try 耗时 130 毫秒
try finally 的开销居然要比except 大近3倍 还不能保证程序不崩溃,
而try excetp 可以达到 finally 的一样效果(就是保证资源释放,因为
即使出现异常程序仍然可以继续执行,所以能保证资源的释放),又可以防
止程序崩溃,那我们凭什么还要用try finally呢?VCL的源码里也都是.
咋就没见过谁这么写程序:
xx := Txx.Create
try
//Do something
excetp
end;
xx.Free;
如下程序只是为了说明try except end 会给程序增加多大开销,
你别吹毛求疵说: 我考这也用try except.
我对一些人的灌水本事真是怕了,所以不得不先声明一下.[!]
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
tick : Cardinal;
begin
tick := GetTickCount;
for i := 0 to 99999999 do
try
if 'asdfkl;jaskl;dfjaskl;dfjl;' = 'asdfklasjfsh' then
ShowMessage('adf');
finally
end;
Label1.Caption := IntToStr(GetTickCount - Tick);
end;
try finally 耗时 1900 毫秒
try except 耗时 570 毫秒
没有try 耗时 130 毫秒
try finally 的开销居然要比except 大近3倍 还不能保证程序不崩溃,
而try excetp 可以达到 finally 的一样效果(就是保证资源释放,因为
即使出现异常程序仍然可以继续执行,所以能保证资源的释放),又可以防
止程序崩溃,那我们凭什么还要用try finally呢?VCL的源码里也都是.
咋就没见过谁这么写程序:
xx := Txx.Create
try
//Do something
excetp
end;
xx.Free;