【问题标题】:why PHP compose/autoload ‘s performance so lowly?为什么 PHP compose/autoload 的性能如此之低?
【发布时间】:2017-12-07 14:50:17
【问题描述】:

最近我要重建一个旧项目。

我发现旧的来源太糟糕了,我决定重新构建所有项目。

我尝试重写一个模块进行测试。

最后我已经在 PHP5.6 环境中完成编码和运行此代码,并使用 xhprof 测试性能以与旧源进行比较。

但新代码的性能并没有明显提升。甚至砍掉...

我发现 Top 消耗的是 compose 的自动加载。

为什么?

OLD_SOURCE:
重量(墙上时间)1,056,607 µs
cpu(cpu时间)370,198 µs
mu(内存使用)6,342,688 bytes

NEW_SOURCE:
重量(墙上时间)1,333,805 µs
cpu(cpu时间)868,354 µs
mu(内存使用)3,668,944 bytes

如前所述。

在新源中

wallt时间了。
cpu 时间增加
内存使用率下降

详细说明:

PDOStatement::执行
181,289 微秒
Composer\Autoload\includeFile@1
156,924 微秒
Composer\Autoload\includeFile
134,179 微秒
文件存在
104,139 µs

在新代码中,我使用了 MySQL PDO。
在旧代码中,使用 MySQLi。
我可以快速理解 MySQLi 到 PDO。

但是为什么 Composer\Autoload\includeFile@1 Composer\Autoload\includeFile 占用更多时间来影响代码??

我找到了 Composer\Autoload\ClassLoader::findFileWithExtension 中的 func file_exists

作曲家中的前 3/4 个问题函数......

【问题讨论】:

标签: php composer-php


【解决方案1】:

我发现改变 opcache 的设置

;允许文件存在覆盖(file_exists 等)性能功能。 opcache.enable_file_override=1

可以改进我的代码。 使用前:
挂墙时间:1,300,687 µs
处理器时间:759,489 µs

之后使用:
挂壁时间:771,002 µs
处理器时间:429,664 µs

惊人的@_@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2014-03-11
    • 2018-02-09
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多