小编Kir*_*sky的帖子

为什么 Lua 中的 error() 比 assert() 运行得更快?

条件断言是以策略方式设计应用程序的众所周知的方法。您可以完全确定您的代码在发布后一天能够正常工作,而且当您团队中的其他开发人员更改此代码时也是如此。

在 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

为什么会发生这种情况?

performance lua assert

3
推荐指数
1
解决办法
3290
查看次数

在MATLAB代码中使用eval('expression')的含义和含义?

我在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.

所以我有几个问题:

  1. 这个函数的使用是否会影响我的代码的性能?
  2. 如果它会减慢执行速度,为什么会发生?
  3. 如果每次调用时都会减慢执行速度,原则上使用此功能的原因是什么?

matlab eval

1
推荐指数
2
解决办法
3391
查看次数

标签 统计

assert ×1

eval ×1

lua ×1

matlab ×1

performance ×1