条件断言是以策略方式设计应用程序的众所周知的方法。您可以完全确定您的代码在发布后一天能够正常工作,而且当您团队中的其他开发人员更改此代码时也是如此。
在 Lua 代码中放置断言有两种常见方法:
assert(1 > 0, "Assert that math works")
Run Code Online (Sandbox Code Playgroud)
if 1 <= 0 then
error("Assert that math doesn't work")
end
Run Code Online (Sandbox Code Playgroud)
从性能的角度来看,我希望这件事类似。仅考虑风格问题。但事实并非如此。
断言在我的机器上工作时间更长:
function with_assert()
for i=1,100000 do
assert(1 < 0, 'Assert')
end
end
function with_error()
for i=1,100000 do
if 1 > 0 then
error('Error')
end
end
end
local t = os.clock()
pcall(with_assert)
print(os.clock() - t)
t = os.clock()
pcall(with_error)
print(os.clock() - t)
Run Code Online (Sandbox Code Playgroud)
>> 3.1999999999999e-05
>> 1.5e-05
为什么会发生这种情况?
我在matlab中的其他人的代码中遇到了函数eval(表达式)的使用:例如:
for n = 1 : 4
sn = int2str( n) ;
eval( [ 'saveas( fig' sn ', [ sName' sn ' ], ''fig'' ) ' ] );
end
Run Code Online (Sandbox Code Playgroud)
Matlab帮助中MathWorks的东西指出:
eval函数的许多常见用法效率较低,并且比其他MATLAB函数和语言结构更难以阅读和调试.
在此之后,我发现在许多其他程序语言中使用此函数,如Python,JavaScript,PHP.
所以我有几个问题: