未使用的使用语句会降低性能吗?

19

我想知道我的类中未使用的use语句是否会影响我的php网站的性能?

php是一开始就包含所有类还是需要时再引入?如果是后者,那么我认为它不会影响系统的性能。

例如:未使用的Use语句'DbConnector'

use model\adapter\DbConnector;

4
所有这类问题都有同样的答案:对其进行概述。 - PeeHaa
1
如果你不使用它,为什么要保留它呢?它只会让代码变得混乱。 - Justinas
我已经在移除未使用的用法,我想知道这是否会提高性能。 - Farid Movsumov
没有什么正当理由可以做得邋遢,但这不会对性能产生任何实质性的影响。 - Halfstop
2个回答

36
不,use语句不会引发类被加载(它甚至不触发自动加载程序)。
它只是为一个类声明一个简短的名称。我认为在 CPU 和 RAM 方面的成本大约为几个 CPU 周期和几个字节。

我正在处理一个场景,由于使用了太多的别名和require_once调用,导致opcode缓存放弃,从而导致巨大的性能损失。如果不使用别名,但保留所有的require_once调用,则一切都正常工作。在PHP 7.0.x上测试过,其他版本未测试。 - oxygen
此外,这个基准测试表明,完全限定名称的调用始终更快:https://veewee.github.io/blog/optimizing-php-performance-by-fq-function-calls/ - oxygen
1
请随意添加您自己的答案,但我认为您误解了问题的要点。我们正在讨论未使用 use 子句的潜在成本,而不是实际使用 use 子句的成本。 - RandomSeed
我没有答案要给出,我只是有一个评论。另外,我是一个长期的用户,我想我现在应该知道了!我并没有说这些语句实际上被使用过。 - oxygen

0
PHP的新版本,特别是PHP 7和PHP 7.2,在将代码编译成字节码时非常擅长优化代码。未使用的use语句只会被编译器删除,甚至不会执行。因此,它根本不会产生任何影响。编译器在解析文件时可能会使用更多的CPU周期,但如果您使用OPCache,它将不会对性能产生任何影响。文件仅在需要时加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接