使用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定义的情况下运行命令.这意味着没有包含扩展名.
所以,对我而言,它现在在一分钟内进行测试,而不是在15分钟内进行.问题有点奇怪,因为它始于我的机器上的PHP 7.2,但我团队中的其他人没有问题,尽管安装了xdebug.我想知道这个问题背后到底是什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |