[LTP] On the performance of lcov...

Eric Chamberland
2016-12-19T19:07:40Z

Hi,

As suggested, I introduced:
cat ~/.lcovrc
geninfo_gcov_all_blocks=0

Now the timings for each steps (see 1st mail) are:

Now ; Before
================
600s ; 660s
1269s ; 2113s
2815s ; 3112s
2305s ; 2227s
1401s ; 1391s
================
total:
8390s ; 9503s

So there is a good gain in the 2nd step, but overall, no big changes...

I am using
gcov -v
gcov (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]

lcov -v
lcov: LCOV version 1.12

Are there any other hints or is it "normal" to have these timings?

Is there someone who tried to optimise gcov or lcov?

Will I see a significant gain if I upgrade to a newer version of the
compiler?

Thanks,

Eric

On 17/12/16 04:29 PM, Eric Chamberland wrote:
> Good, I modified the ~/.lcovrc file and I will report the new timings
> tomorrow.
>
> Thanks! :)
>
> Eric
>
> Le 2016-12-17 à 14:06, Jan Stancek a écrit :
>>
>>
>>
>> ----- Original Message -----
>>> From: "Eric Chamberland" <Eric.Chamberland@giref.ulaval.ca>
>>> To: ltp@lists.linux.it
>>> Sent: Saturday, 17 December, 2016 7:56:17 PM
>>> Subject: [LTP] On the performance of lcov...
>>>
>>> Hi,
>>>
>>> We are running gcov+lcov analysis each night for our software. It does
>>> a really great job to help us manage our nightly tests database (~1100
>>> runs) and to discover unused lines of code! :)
>>>
>>> However running lcov+genthml is really time consuming (longer than the
>>> tests or even compiling the code) and I would like to know if there is a
>>> way to make lcov+genthml go a little faster...
>>>
>>> Here is the timings for a complete analysis and html generation:
>>>
>>> ===========================
>>> 660s (1866 .gcno files): lcov --rc lcov_branch_coverage=1 --capture
>>> --initial -d $obj/dev -d $obj2/dev -o init.info
>>>
>>> 2113s (1662 .gcda files): lcov --rc lcov_branch_coverage=1 --capture -d
>>> $obj/dev -d $obj2/dev -o cov.info
>>>
>>> 3112s: lcov --rc lcov_branch_coverage=1 --remove init.info "/usr*"
>>> "/opt*" "/pmi/Indus*" -o init.info && lcov --rc lcov_branch_coverage=1
>>> --remove cov.info "/usr*" "/opt*" "/pmi/Indus*" -o cov.info
>>> ...
>>> Deleted 255 files
>>> Writing data to cov.info
>>> Summary coverage rate:
>>> lines......: 69.4% (357216 of 515067 lines)
>>> functions..: 64.1% (61500 of 95942 functions)
>>> branches...: 32.1% (717338 of 2232711 branches)
>>>
>>> 2227s: lcov --rc lcov_branch_coverage=1 -a init.info -a cov.info -o
>>> total.info
>>> ...
>>> Combining tracefiles.
>>> Reading tracefile init.info
>>> Reading tracefile cov.info
>>> Writing data to total.info
>>> Summary coverage rate:
>>> lines......: 64.5% (357216 of 553958 lines)
>>> functions..: 60.3% (61500 of 102006 functions)
>>> branches...: 32.1% (717338 of 2232711 branches)
>>>
>>> 1391s: genhtml --show-details --legend --branch-coverage
>>> --demangle-cpp -o $$pref_html/coverage_dev total.info
>>> Reading data file total.info
>>> Found 2854 entries.
>>> ...
>>> ===========================
>>>
>>> total time: 9503s => 2h38m
>>>
>>> We would like to understand if we are doing something wrong... or if
>>> someone is aware of this performance "problem" or willing to optimize
>>> lcov/genthml code itself?
>> Hi,
>>
>> 2 bugs below come to mind, try turning off --all-blocks to see if this is
>> your case as well. There should an option for that in lcov config file.
>>
>> Bug 1290759 - gcov takes up to 36hours to process xfs_sb.gcda on Intel
>> Xeon
>> https://bugzilla.redhat.com/show_bug.cgi?id=1290759
>>
>> Bug 67992 - GCOV takes an absurdly long time to process a file
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67992
>>
>> Regards,
>> Jan
>>
>>> anyway, thanks for this great tool! :)
>>>
>>> Eric
>>>
>>>
>>> --
>>> Mailing list info: https://lists.linux.it/listinfo/ltp
>>>
>
>