我遇到了 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 --combine
和 lcov --remove
步骤也非常慢。每人大约 45 秒。
有什么方法可以加快这个合并步骤吗?如有必要,我可以使用多个线程,并且我有足够的内存。如果有其他工具能够正确执行此组合,我也会感兴趣(我尝试将文件转换为 Cobertura 并与我找到的 Python 脚本进行合并,但它崩溃了)。
如果有完全替代 lcov 的方法,我也很感兴趣。我一直在使用 gcovr,但是有了它,我必须使用其他几个工具来进行组合,它不是最佳的,但它要快得多。
最佳答案
If there is an alternative to lcov completely, I'm also interested.
尝试 fastcov - 它将并行使用所有可用的内核(它可以以 lcov 信息格式输出报告):
https://github.com/RPGillespie6/fastcov
它还可以合并文件。注意:您需要 GCC 9+
关于c++ - 如何让lcov执行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211721/