Ако изпълнявам тестовете си с PHP7.2 или PHP7.1, те са около 3 пъти по-бавни, отколкото ако ги изпълнявам с PHP7.0. Има ли все пак да стигнем до дъното защо това се случва?
Дори когато стартирам тестовите пакети (Feature & Unit) отделно, пак виждам забавяне. Само когато пусна тестовете поотделно, разликата в скоростта става незначителна.
Използвам 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
perf record
и след това проверете изхода наperf report
и за двата случая. - person NikiC   schedule 14.01.2018