【问题标题】:PHP - is there a speed advantage for using ! instead of empty()?PHP - 使用有速度优势吗!而不是空()?
【发布时间】:2019-01-24 09:09:41
【问题描述】:

是!运算符比 empty() 快?

测试!运营商:

    $start_ts = microtime(true);
    $someVar = true;
    $_10M = 10000000;
    for($i = 0; $i < $_10M; $i++) {
        if(!$someVar) {

        }
    }
    $end_ts = microtime(true);
    die(var_dump($end_ts - $start_ts));

测试空():

    $start_ts = microtime(true);
    $someVar = true;
    $_10M = 10000000;
    for($i = 0; $i < $_10M; $i++) {
        if(empty($someVar)) {

        }
    }
    $end_ts = microtime(true);
    die(var_dump($end_ts - $start_ts));

它们都需要大约 1.3 秒才能运行。

为什么函数调用不比使用慢!操作员?调用empty()没有开销吗?

我认为 empty() 调用会更慢,但似乎并非如此。

【问题讨论】:

  • 为什么函数调用不比使用慢!运算符? 其实,这不是一个函数,而是原生语言结构

标签: php performance optimization


【解决方案1】:
  1. 没关系。
  2. 没关系。
  3. empty 不是一个函数,它是一个语言结构。它更像是一个运算符。
  4. 写下你的意思。!empty 之间的重要区别在于,empty 是可以预期的,如果变量根本不存在。这基本上会关闭错误报告,并且如果您输入了变量名,则很难找到问题。只有在合理预期该值可能根本不存在时才使用empty
  5. 各种缓存的东西加速热身咳嗽
  6. 没关系。

含义:在实践中,您永远不应该关心(几乎不存在,参见 3.)差异,因为它不是任何事物的任何重要标准(参见 4.)。如果您真的想知道,请深入研究 C 源代码。但这与任何编写 PHP 代码的人都无关。

【讨论】:

  • 我的问题没有问任何关于 !和 empty() 因为我很清楚这一点。所以我不能接受这个作为答案,因为原始问题没有得到回答。我只是问了一个理论问题,哪个更快,根据我的测试,它们几乎相同。我看不出你的主观意见“没关系”与我的问题有什么关系。
  • @Tool 好吧,第 3 点在某种程度上解决了您的问题。它不是一个函数,那么你为什么期望有一个特定的区别呢?你已经发现没有。在实践中,你永远不应该关心它,因为它不是任何重要的标准。如果您真的想知道,请深入研究 C 代码。但这与任何编写 PHP 代码的人都无关。
  • 谢谢 - 这对我来说更有意义。如果您将答案改写为更像此评论,我会接受。
猜你喜欢
  • 2011-09-23
  • 1970-01-01
  • 2011-01-06
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
相关资源
最近更新 更多