Php 函数调用的数量对性能有多大影响?

Php 函数调用的数量对性能有多大影响?,php,optimization,Php,Optimization,调用更多函数是否会对性能产生任何明显的影响,或者试图减少函数调用的数量是否是一种毫无意义的过早优化 简化示例:这两者之间是否有实际的性能示例: function foo($var) { echo $var; } foo(); 这是: function foo($var) { bar($var); } function bar($var) { baz($var); } function baz($var) { echo $var; } foo(); 总是先进行分析,

调用更多函数是否会对性能产生任何明显的影响,或者试图减少函数调用的数量是否是一种毫无意义的过早优化

简化示例:这两者之间是否有实际的性能示例:

function foo($var) {
    echo $var;
}
foo();
这是:

function foo($var) {
   bar($var);
}

function bar($var) {
  baz($var);
}

function baz($var) {
  echo $var;
}

foo();

总是先进行分析,然后再进行优化


另一方面,函数调用确实有一些开销,但在决定优化函数调用之前,您应该真正分析代码。

这是过早的优化。您应该具有基于您的域和代码中任务的逻辑分离的有意义的函数。我唯一想到的是用内联代码替换函数,如果它处于一个紧密的循环中,而分析器则显示它是个问题。

为了更直接地回答您的问题,对性能的影响取决于许多因素:

  • 函数多久调用一次
  • 它是否在代码的关键部分
  • 功能有多大
    决定功能中是否应该包含某些内容应该由逻辑分离、清晰性、可维护性等驱动,而不是由性能驱动

    函数调用的开销实际上相当大。但它在总体规划中仍然很低。如果你在执行过程中只给链打了几次电话,别担心。如果你要循环很多,那么你可能需要考虑优化它。p>
    但请记住,最大的性能提升是从非工作状态过渡到工作状态。然后才开始解决实际的瓶颈。。。永远不要忘记:
    过早优化是万恶之源

    我不会担心速度,而是担心内存,因为每个函数调用都会消耗堆栈。同样,在像您这样的例子中担心这一点可能是过早的优化,但是如果您计划使用一种没有优化过的语言来处理递归函数调用的递归算法,那么最好记住这一点。

    以最简单的方式回答您的问题不

    现在,对于较长的答案,函数开销是如此之小,以至于在对特定函数进行了至少数百万次调用之前,您不会开始注意到它。在大多数UI程序中,很少发生对方法有数百万次调用的情况。与调用函数相关的开销相比,函数内部的内容对性能的影响要大得多

    进一步说明我的观点。计算机的运行时间为纳秒。人类可以检测到大约10毫秒(来自UI测试)。1ms=1.0×10^6纳秒。因此,如果调用函数需要1ns,则需要调用100万到1000万次,人类才能分辨出差异

    如果一个函数的内容调用起来很昂贵,那么减少调用时的开销可以提高性能,但这与函数内部的内容有关,而与调用函数的行为无关

    在测量之前,不要尝试优化。我再说一遍,永远不要试图预测你的应用程序会有什么表现。始终使用探查器测量性能。这就像在编写程序之前试图预测程序中的错误一样