如何让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 --combinelcov --remove 步骤也很慢。每个人大约 45 秒。

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

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

【问题讨论】:

哈,没什么……我有一个需要一个小时的 lcov 工作 :) 【参考方案1】:

如果完全有lcov的替代品,我也很感兴趣。

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

https://github.com/RPGillespie6/fastcov

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

【讨论】:

以上是关于如何让lcov执行得更快?的主要内容,如果未能解决你的问题,请参考以下文章

如何让这个查询在 postgres 中运行得更快

如何更改 Karma 执行的 LCOV 报告的格式?

如何使 CSV 上传执行得更快?

如何优化此查询并使其执行得更快? [关闭]

如何使MongoDB更新执行得更快?

初识并发编程