使用PHP7.2和7.1运行的phpunit测试比使用PHP7.0运行时慢3倍

前端之家收集整理的这篇文章主要介绍了使用PHP7.2和7.1运行的phpunit测试比使用PHP7.0运行时慢3倍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我使用 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数据库,以及Laravel CreatesApplication和RefreshDatabase特性,因为我希望每个测试都能独立运行.

我没有安装或运行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
我遇到了与你相同的问题,但安装了XDebug.我在Laracasts上找到了一个名为Roni的​​用户的相当好的提示(我再也找不到链接,抱歉),它说用PHP命令的-n标志运行测试,如下所示:PHP -n vendor / bin / PHPUnit的.

根据php.net (command line options)的文档,这是用于在没有PHP.ini定义的情况下运行命令.这意味着没有包含扩展名.

-n No PHP.ini file will be used

所以,对我而言,它现在在一分钟内进行测试,而不是在15分钟内进行.问题有点奇怪,因为它始于我的机器上的PHP 7.2,但我团队中的其他人没有问题,尽管安装了xdebug.我想知道这个问题背后到底是什么.

原文链接:https://www.f2er.com/php/136603.html

猜你在找的PHP相关文章