为啥人们说 require_once 比 require 慢? [复制]
Posted
技术标签:
【中文标题】为啥人们说 require_once 比 require 慢? [复制]【英文标题】: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(),因为那个数组检查。抱怨它慢的人是那些在鸡尾酒餐巾纸设计阶段进行代码微优化的人。 【参考方案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()
更慢。
【讨论】:
以上是关于为啥人们说 require_once 比 require 慢? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
“for(;;)”比“while (true)”快吗?如果不是,人们为啥要使用它?