【问题标题】:Why do people say require_once is slower than require? [duplicate]为什么人们说 require_once 比 require 慢? [复制]
【发布时间】:2011-11-11 11:23:26
【问题描述】:

可能重复:
Why is require_once so bad to use?

当 PHP 包含一个文件时,我假设它将文件名存储在一个数组中。

然后,当包含另一个文件时,它会检查该数组以查看它是否已经包含,对吗?

那么这里有什么大不了的?为什么人们如此害怕这种数组检查?这不像您要包含数百万个文件...

in_array 检查一直进行。我几乎在所有功能中都使用它们:)

【问题讨论】:

  • 我不确定性能是否相关,因为这两个函数做不同的事情。您应该根据其功能而非性能来选择使用哪一个。
  • 您说这只是微观优化是对的,但我不相信“人们如此害怕这种数组检查”
  • 从未听说过。你能指出它是在哪里说的吗?
  • 人们往往会说很多废话,你知道的。
  • 使用 _once 版本比使用 _once 版本需要额外的 MICROSCOPIC 开销。普通的 require(),因为那个数组检查。抱怨它慢的人是那些在鸡尾酒餐巾纸设计阶段进行代码微优化的人。

标签: php arrays require require-once


【解决方案1】:

事实上,对于明智计划的应用程序,像require_once这样的函数是没有用的。

对于缓慢 - 它可以忽略不计。

【讨论】:

  • 你说它们没用是什么意思?例如,Zend 框架如何避免使用require_once
  • 嗯,ZF 只是不明智的计划应用
  • +1,合理规划是关键,今天给你-1我一次:)
  • 请解释一下。我觉得你说的很荒谬。那么,如何使用两个都需要第三个组件的组件呢?如果他们都使用require,你会得到一个错误,如果require默认使用一次,那么如果你选择不使用这些组件,就会产生不必要的开销。
  • 对于类,您可以定义一个适当的自动加载器并合理地命名您的类文件,它们会在需要定义类时被加载一次。
【解决方案2】:

我不确定说这话的“人”是谁,但我相信这是在任何语言中普遍存在的众多微优化神话之一。

这是一篇对这些方法进行基准测试的文章: http://arin.me/blog/php-require-vs-include-vs-require_once-vs-include_once-performance-test

您的里程可能会有所不同,但我怀疑您会通过避免使用x_once 函数而看到任何显着的性能提升。使用适合这种情况的语言结构,并且您没有做错任何事情。 x_once 可能表明您需要重新考虑项目组织或考虑使用autoloader,但不是eval...

【讨论】:

  • +1 只是为了邪恶的文字游戏
【解决方案3】:

require_once() 有两个问题,如果忽略性能问题,第二个也很重要。如果您使用require_once(),这意味着您可以多次使用require 同一个文件。这本质上是错误或错误的设计。现在是性能部分,对于 web 优化的应用程序将无能为力。如果您了解提供静态 HTML 文件或缓存内容比提供 PHP 文件更快,您就会理解为什么人们说使用 require_once() 更慢。

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2011-02-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多