如果我使用 PHP7.2 或 PHP7.1 运行测试,它们的速度比使用 PHP7.0 运行它们的速度慢 3 倍。有没有办法弄清楚为什么会发生这种情况?
即使我单独运行测试套件(功能和单元),我仍然看到速度变慢。只有当我单独运行测试时,速度差异才会变得微不足道。
我正在使用 Laravel 5.5.20 和 Laravel Homestead 7.0.1。我有 47 个相当简单的测试,有的打到数据库,有的只是简单的断言;所以没有什么需要花费很长时间的。
我安装了johnkary/phpunit-speedtrap以查看哪些测试花费的时间最长,因此我可以删除这些测试,但没有一个特定的测试需要很长时间,因为如果我删除有问题的测试,下一个测试将需要很长时间(见下文) .
First Run Second Run
Test A 0.2 sec Test A 0.2 sec
Test B. 0.3 sec Test B. 0.3 sec
Test C 0.1 sec Test C 0.1 sec
Test D 0.1 sec Test D 0.1 sec
Test E 9.3 sec REMOVED Test E
Test F 0.3 sec Test F 9.3 sec <-- Test F now takes ages
Test G 0.2 sec Test G 0.2 sec
我还使用了一个内存中的 SQLite3 数据库,它带有 LaravelCreatesApplication
和RefreshDatabase
trait,因为我希望每个测试都独立运行。
我没有安装或运行 Xdebug。是否知道 PHP7.1 和 PHP7.2 需要很长时间才能运行 PHPUnit 测试?还有什么我可以安装(甚至使用 Xdebug 运行它)来追踪导致问题的确切原因吗?
设置
Laravel 5.5.20
Laravel Homestead 7.0.1 (Per-project installation)
PHPUnit 6.4.4
Vagrant 2.0.1
Virtualbox 5.2.4
结果
PHP 7.2 PHPUnit 6.4.4
Time: 12.4 seconds, Memory: 162.00MB
PHP 7.1 PHPUnit 6.4.4
Time: 12.19 seconds, Memory: 162.00MB
PHP 7.0 PHPUnit 6.4.4
Time: 4.88 seconds, Memory: 162.00MB