如何让lcov执行得更快?
Posted
技术标签:
【中文标题】如何让lcov执行得更快?【英文标题】:How to make lcov perform faster? 【发布时间】:2016-09-09 18:03:05 【问题描述】:我遇到了 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,但是有了它,我必须使用其他几个工具来进行组合,它不是最佳的,但它要快得多。
【问题讨论】:
哈,没什么……我有一个需要一个小时的 lcov 工作 :) 【参考方案1】:如果完全有lcov的替代品,我也很感兴趣。
试试 fastcov - 它会并行使用所有可用的内核(它可以输出 lcov 信息格式的报告):
https://github.com/RPGillespie6/fastcov
它还可以合并文件。注意:您需要 GCC 9+
【讨论】:
以上是关于如何让lcov执行得更快?的主要内容,如果未能解决你的问题,请参考以下文章