我在lcov中遇到性能问题。

我正在七个不同的配置文件中执行一个程序,收集它们各自的覆盖率,然后将覆盖率配置文件与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

但是,这太慢了。组合我的7个配置文件大约需要10分钟,实际上这比编译和运行7个配置文件所花费的时间更长。每个dat文件约为1M行。
lcov --combinelcov --remove步骤也非常慢。每个人大约45秒。

有什么方法可以加快此合并步骤的速度吗?如果有必要,我可以使用多个线程,并且我有足够的内存。如果还有其他工具能够正确完成此组合,我也会很感兴趣(我曾尝试将文件转换为Cobertura并使用我发现的Python脚本进行合并,但会崩溃)。

如果还有lcov的替代品,我也很感兴趣。我一直在使用gcovr,但要使用它,我必须使用其他几种工具进行组合,虽然它不是最佳方法,但是速度要快得多。

最佳答案



尝试fastcov-它会并行使用所有可用的内核(它可以以lcov信息格式输出报告):

https://github.com/RPGillespie6/fastcov

它还可以合并文件。注意:您需要GCC 9+

关于c++ - 如何使lcov的执行速度更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37211721/

10-10 21:15