Skip to content

Serializing CodeCoverage yields ~50 times more data, breaks paratest #1090

@verfriemelt-dot-org

Description

@verfriemelt-dot-org
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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions