【问题标题】:PHP Functions and server efficiency [duplicate]PHP函数和服务器效率[重复]
【发布时间】:2016-02-14 13:00:07
【问题描述】:

所以如果我有以下代码:

<?php
function someFunction()
{
    //lots of lines of code
}

if ($someBooleanVariable)
{
    //some random code
}
else
{
    someFunction();
}

?>

问题 1:我是否正确假设服务器将首先加载整个函数,然后甚至可能不使用它?

问题 2: 如果是这样的话,将函数代码放在前面代码中 else 之后的括号“{}”中不是更有效吗? (假设代码只运行一次,不需要在其他任何地方使用)。

由于代码只有在“$someBooleanVariable”为 FALSE 的情况下才会加载和运行,所以我假设如果代码不在函数中而是在“else”后面的括号内,那么服务器的使用就会减少。但是我假设服务器每次都自动加载功能代码,因为它位于页面顶部,这可能是问题的根源。

【问题讨论】:

  • 您输入此问题所花费的时间可能比服务器通过优化此行为所节省的一千年运行时间要多。

标签: php performance function server


【解决方案1】:

PHP 必须解析整个文件,从中创建一些代表源代码的字节码,然后执行该字节码。

函数的放置位置无关紧要 - 它始终会被解析并制成字节码。

一旦它是字节码,执行路径可能会有所不同,即函数可能不会被调用,但我看不出这会产生任何细微的差异。

总而言之,您是在询问微优化。如果您可以编写代码,清楚地证明一种方法比另一种更好,并且速度差异很大(即它们快 10% 以上),并且代码可读性没有明显变差,那么您就有了一个有效的案例.

我认为您在这里没有有效的案例。该函数将独立于其放置位置进行解析,并且仅在代码路径指向该位置时执行。

【讨论】:

  • 值得注意的是,将函数定义放在 else{} 中意味着在此之前它不会被注册以供代码使用。如果从不触发,这可能会节省大量的处理时间。
  • 将函数声明与实际代码路径区别对待是有充分理由的——它使代码对人类读者来说更加清晰易懂,这是最重要的。引擎可以优化其他所有内容。
  • 绝对。我会更进一步,在辅助类中使用静态方法,而不是到处使用单独的函数。让自动加载器处理它:)
  • 避免使用静态方法。
  • 有点笼统的声明......真可惜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多