调用函数、传递另一个函数调用的多个返回值的性能?

问题描述 投票:0回答:1

函数

f()
返回多个值,这些值将被输入到第二个函数
g()
中。我无法更改
f()
,但我可以更改
g()
以及对其的所有调用。我想知道是否可以说哪种变体表现最好?取决于什么?

  • 带有一个表参数的函数头

    function g(arg)
    --code
    end
    

    以及使用表构造函数调用函数

    g({f()})
    
  • 参数数量可变的函数头

    function g(...)
    --code
    end
    

    和常规函数调用

    g(f())
    
  • 具有多个变量的函数头(假设

    f()
    返回值的数量已知)

    function g(x, y, z)
    --code
    end
    

    和常规函数调用

    g(f())
    
  • 完全不同的变体?

function performance lua lua-table lua-5.0
1个回答
0
投票

首先,谨防过早优化。如果

g(f())
呼叫相对较少,则差异可能可以忽略不计。

接下来,创建额外的表需要时间,因此选项(1)总是比(3)慢。

关于选项 (2),它实际上取决于

g()
对参数的实际作用。
local args = {...}
与选项 (1) 等效,而
local x, y, z = ...
与选项 (2) 相同。

© www.soinside.com 2019 - 2024. All rights reserved.