未使用的 use 语句会降低性能吗?
Posted
技术标签:
【中文标题】未使用的 use 语句会降低性能吗?【英文标题】:Do unused use statements decrease performance? 【发布时间】:2015-01-29 09:54:09 【问题描述】:我想知道课堂上未使用的 use 语句是否会影响我的 php 网站的性能?
php 是否在开始时或需要时包含所有类?如果是第二选择,那么我认为它不会影响我的系统的性能。
例如:Use statement 'DbConnector' is not used
use model\adapter\DbConnector;
【问题讨论】:
像这样的所有问题都有相同的答案:分析它。 如果你不使用它,为什么要保留它?它只会让你的代码变得混乱。 我已经删除了未使用的用途,我想知道它是否会提高性能。 马虎没有正当理由,但不会以任何有意义的方式影响性能。 【参考方案1】:不,use
语句不会触发要加载的类(它甚至不会触发自动加载器)。
它只是为一个类声明一个短名称。我假设在 CPU 和 RAM 方面的成本大约是几个 CPU 周期和几个字节。
【讨论】:
有一个场景我正在战斗,由于过多的使用别名和 require_once 调用,操作码缓存放弃导致巨大的性能损失。不使用别名但保留所有 require_once 调用,一切正常。在 PHP 7.0.x 上,没有测试其他人。 另外,这个基准测试表明完全合格总是更快:veewee.github.io/blog/… 随意添加您自己的答案,但我的印象是您误解了问题的重点。我们正在讨论未使用use
子句的潜在成本,而不是实际使用 use
子句的成本。
我没有答案,我有意见。另外,我是老用户了,我想我现在应该知道了!我没有说这些语句是实际使用的。【参考方案2】:
较新版本的 PHP、PHP 7 尤其是 PHP 7.2 在编译成字节码时非常擅长优化代码。 Unsed use
语句只是被编译器剥离,甚至不会执行。因此,它不应该有任何影响。编译器在解析文件时可能会使用更多的 CPU 周期,但如果您使用 OPCache,则不会影响性能。只有在需要时才会加载文件。
【讨论】:
以上是关于未使用的 use 语句会降低性能吗?的主要内容,如果未能解决你的问题,请参考以下文章