How to make lcov work faster?

I have performance issues with lcov.

I run the program in seven different profiles, collecting coverage for each of them, and then merging the coverage profile with lcov:

lcov --rc lcov_branch_coverage=1 -a coverage_1.dat -a coverage_2.dat -a coverage_3.dat -a coverage_4.dat -a coverage_5.dat -a coverage_6.dat -a coverage_7.dat -o coverage_full.dat 

However, it is painfully slow. It takes about 10 minutes to merge my 7 profiles, which is actually longer than it takes to compile and run 7 profiles. Each data file has about 1 M lines.

The steps lcov --combine and lcov --remove also very slow. About 45 seconds for each of them.

Is there a way to speed up this phase of the merger? If necessary, I can use several threads, and I have a lot of memory. If there is another tool that can correctly execute this combination, I would be interested too (I tried to convert the files to Cobertura and merge with the Python script that I found, but it crashes).

If there is a complete alternative to lcov, I am also interested. I use gcovr, but with this I have to use several other tools to perform the combination, and this is not optimal, but it is much faster.

+9
source share

All Articles