【发布时间】:2012-08-07 18:05:31
【问题描述】:
有人建议我使用第二个,try-except 变体,但我也想知道其他人的想法:下面两个(如果有的话)哪个过程更省时?
procedure LoadImage(img: TImage; filename: string);
begin
if fileexists(filename) then
img.Picture.Loadfromfile(filename)
else
img.Picture.Loadfromfile('default.jpg')
end;
或
procedure LoadImage(img: TImage; filename: string);
begin
try
img.Picture.Loadfromfile(filename)
except
img.Picture.Loadfromfile('default.jpg')
end
end;
【问题讨论】:
-
它们不相等。第一个至少有两个问题:1)竞争条件 2)如果文件存在,但无法加载,则会抛出异常。
-
第一个图像多久存在一次?第一个代码优化错误案例,第二个代码优化成功案例。
-
看在上帝的份上,您正在加载图像.. 不要对速度快几个数量级的代码进行微优化。
-
不是非此即彼,您应该检查文件是否存在并捕获错误。我真的不喜欢通过 try excepts 定义程序流。
-
只是一个建议,如果您打算多次加载
Default.jpg,那么最好预加载一次并保持加载,每次加载时使用已加载的版本需要,而不是一遍又一遍地从文件中加载它。
标签: performance delphi if-statement try-except