Javascript 嵌套是否影响效率?

Javascript 嵌套是否影响效率?,javascript,python,performance,coding-style,nested,Javascript,Python,Performance,Coding Style,Nested,考虑Python或JavaScript等语言,它们允许函数按如下方式嵌套: print(vector(a * b),(a * c),(b * c))) i = (a * b) j = (a * c) k = (b * c) V = vector(i,j,k) print(V) 或者像这样平的: print(vector(a * b),(a * c),(b * c))) i = (a * b) j = (a * c) k = (b * c) V = vector(i,j,k) print(V

考虑Python或JavaScript等语言,它们允许函数按如下方式嵌套:

print(vector(a * b),(a * c),(b * c)))
i = (a * b)
j = (a * c)
k = (b * c)
V = vector(i,j,k)
print(V)
或者像这样平的:

print(vector(a * b),(a * c),(b * c)))
i = (a * b)
j = (a * c)
k = (b * c)
V = vector(i,j,k)
print(V)
不同的格式对性能有多大影响?是否可以做出有效的概括,或者是否因语言而异


我期望一个优化编译器将为这两个编译器进行内联并输出大致相同的机器代码。因此,这可能只是解释语言的一个问题?

任何函数调用都会添加少量的机器指令,与内联显示的相同代码或将函数视为内联的编译相比,包含更多的参数

然而,这是一个非常少的机器指令。因此,在大多数情况下,通过选择和实现更高效的算法,您可以轻松地为任何非平凡大小的输入返回

如果您真的处于性能的最前沿(除非您正在使用设备驱动程序,否则很可能不是),那么您可以开始内联函数或切换到汇编

但在任何情况下,都要先编写尽可能清晰的代码,然后在开始担心性能之前进行度量。这样做可以减少bug,从而有更多的时间优化正确工作的代码


编辑:如果您指的是匿名函数之类的东西,它们会导致性能下降,但是,一如既往,首先测量,然后优化。

在我看到的Pascal实现中,嵌套函数允许访问外部函数作用域中的变量,编译器必须为每一层嵌套维护一个额外的帧指针,并在嵌套函数从外部作用域访问某些内容时取消对它的引用。如果嵌套函数在紧循环中使用了外部函数的变量,我唯一认为这是一个问题。在这种情况下,额外的解引用操作可能会影响性能;将变量复制到循环外部的内部作用域可以避免额外的开销。

您认为嵌套影响性能的原因是什么?您是在谈论函数调用的嵌套还是函数定义的嵌套?例如,
(+(*(-12)3)4)
可读性是否受到威胁?向我们展示一个您关心的代码示例会对我们有所帮助。@PeterK:老实说,我不知道这是人们的一个激励因素。谢谢你指出这一点。:-。。。如果你在性能方面处于领先地位,你可能对这个问题了解得足够多,不必一开始就提出这个问题。函数调用的数量有什么不同?@Bryan Oakley。对于这个问题,那些刚接触到“炽热边缘”的人知道得不够多,因此他们会问问题。@Rainer不是函数调用的数量,而是机器指令的数量。每个参数意味着cpu中还有一条“推送到堆栈”指令。它很容易通过其他优化来克服,因为它的级别很低。我会更新我的答案,让它更清楚。每次给变量赋值并将其移动到下一个调用通常也是一些说明。