如何让 lcov 运行更快?

11

我在使用 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

然而,这个过程非常缓慢。将我的七个档案组合起来大约需要10分钟,实际上比编译和运行这七个档案还要花费更长的时间。每个dat文件大约有1M行。

lcov --combinelcov --remove 步骤也非常缓慢。每个步骤都需要大约45秒。

是否有任何方法可以加速合并步骤?如果必要,我可以使用多个线程,并且我有足够的内存。如果有其他工具能够正确地执行此组合操作,我也会感兴趣(我尝试将文件转换为Cobertura并使用找到的Python脚本进行合并,但它会崩溃)。

如果完全有替代lcov的方案,我也很感兴趣。我一直在使用gcovr,但是使用它,我必须使用其他几个工具进行组合,这不是最优的,但速度要快得多。


哈哈,那算不了什么...我有一个需要花费一个小时的 lcov 工作 :) - jsj
1个回答

2
如果完全有替代lcov的工具,我也很感兴趣。尝试使用fastcov - 它可以并行使用所有可用核心(可以输出lcov信息格式的报告):

https://github.com/RPGillespie6/fastcov

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接