-
-
Notifications
You must be signed in to change notification settings - Fork 386
Description
Q | A |
---|---|
php-code-coverage version | 12.3.4 |
PHP version | 8.3.24 |
Driver | Xdebug |
PCOV version (if used) | -- |
Xdebug version (if used) | 3.4.5 |
Installation Method | Composer |
Usage Method | PHPUnit |
PHPUnit version (if used) | 12.3.7 |
first of all, i am not really sure, if this is a bugticket for the coverage package or more or less paratest 🤔
paratest serializes CodeCoverage
into a file, unserializes this in the main process and uses merge()
to combine everything to get the final result.
with phpunit 11 and thus php-code-coverage 11.x - this file on a big codebase is roughly 8M and unserializing takes about 300ms
$ ls
-rw-rw-r-- 1 easteregg 8.0M Aug 31 21:26 coverage-serialized-phpunit11.full
$ cat test.php
<?php
require '../vendor/autoload.php';
include 'coverage-serialized-phpunit11.full';
$ time php test.php
php test.php 0.17s user 0.10s system 101% cpu 0.270 total
where as the serialized version from version 12 is about 467MB in size and takes 120 seconds (!)
$ ls
-rw-rw-r-- 1 easteregg 467M Aug 31 21:28 coverage-serialized-phpunit12.full
$ time php test.php
php test.php 120.24s user 0.32s system 99% cpu 2:00.57 total
that completly breaks paratest, due to loading all 16 threads on a dev machine (or worse, 64 threads on the ci machine) takes ages now 🤔
running the script with xdebug profiler did not show anything too useful, aside from 100% time spent in unserialize 🤔
should i report this to paratest or is this considered an issue applicable here?