使用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个相当简单的测试,一些命中数据库,另一些只是简单的断言;因此,没有任何东西需要花费时间 我安装的目的是查看哪些测试花费的时间最长,以便删除这些测试,但没有一个特定的测试需要很长时间,因为如果我删除有问题的测试,下一个测试将需要很长时间(见下文) 结果使用PHP7.2和7.1运行的phpunit测试比使用PHP7.0运行时慢3倍,phpunit,php-7,laravel-5.5,php-7.1,php-7.2,Phpunit,Php 7,Laravel 5.5,Php 7.1,Php 7.2,如果我使用PHP7.2或PHP7.1运行测试,它们的速度大约是使用PHP7.0运行测试的3倍。究竟有没有办法弄清为什么会发生这种情况 即使我单独运行测试套件(功能部件和单元),我仍然会看到速度变慢。只有当我单独运行测试时,速度差才会变得微不足道 我使用的是Laravel 5.5.20和Laravel Homestead 7.0.1。我有47个相当简单的测试,一些命中数据库,另一些只是简单的断言;因此,没有任何东西需要花费时间 我安装的目的是查看哪些测试花费的时间最长,以便删除这些测试,但没有一个
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.ini定义的情况下运行命令。这意味着不包括任何扩展
-n不使用php.ini文件
所以,对我来说,它现在在一分钟内运行测试,而不是在15分钟内。这个问题有点奇怪,因为它是从我的机器上的PHP7.2开始的,但是我团队中的其他人没有这个问题,尽管安装了xdebug。我想知道这个问题背后的真正原因。请在
perf record
下运行phpunit,然后检查perf report
的输出,这两种情况都是如此。我遇到了同样的问题。我找到了克里斯·沃史密斯。测试运行速度提高了44%,但内存增加了5倍。我希望这些信息是有用的。谢谢,我会看看这是否有帮助。谢谢你的提示,当不需要覆盖率/xdebug时,这会大大加快测试速度。你也可以做php-d xdebug.mode=off./vendor/bin/phpunit
,这让我感觉更干净
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