基本上我有一个数组,想为每个元素调用相同的函数。哪种方式更快?
foreach($elemeents as $element){
callFunction($element);
}
OR
function callFunction($leements){
foreach($elements as $element){
//do something
}
}
提前感谢,我只是一个初学者
答案 0 :(得分:3)
函数内部的循环可能稍快一些,因为每个函数调用都有(轻微)成本。但是,它没有太大的区别。
这实际上是过早优化,the root of all evil。
你应该把它写得很清楚,然后如果它太慢,找出它慢的地方并优化它。
答案 1 :(得分:0)
这种微观优化很可能并不重要。做任何事都会导致更清晰的代码。
如果您知道(知道,而不是猜测)这段特定代码会导致性能问题,那么第二种替代方案几乎肯定会稍快一些。
答案 2 :(得分:0)
它们本质上是相同的,任何时候执行差异都可以忽略不计。归结为偏好。
答案 3 :(得分:0)
我不认为两者之间会有太大差异,但从我记得的函数堆栈调用中,第一种方法应该花费更长的时间。
答案 4 :(得分:0)
在我所知道的每种语言中,使用循环更快,因为调用函数时涉及的操作(如将其添加到堆栈中)。
但是,在出现实际性能问题之前,您不应该考虑性能。从设计,代码清晰度和低维护工作的角度考虑。
答案 5 :(得分:0)
简而言之:第二个应该更快。
详细说明:调用函数时,函数参数,局部变量和返回地址被推送到内部堆栈,并在函数调用完成后弹出堆栈。这意味着您的第一个变体将导致数组中每个值的这些堆栈操作,而第二个变体只会导致这些堆栈操作一次。