gpt4 book ai didi

c++ - 单元测试需要很长时间才能运行。 Valgrind 问题? Gcov问题?

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:53 25 4
gpt4 key购买 nike

我为我正在从事的项目创建了一个单元测试套件。我的单元测试过去运行得非常快......其中 200 多个将在几秒钟内运行。通常每个测试将花费不到 10 毫秒。现在,在使用 Valgrind 和 Gcov 时,每个测试可能需要超过 1.5 分钟才能运行!有没有人有过非常慢的单元测试的经验?在任何特定情况下,Valgrind、gcov 或 Google Test 是否会导致程序执行显着减慢?更令人困惑的是,一些单元测试运行得很好(即非常快),而其他单元测试需要很多秒才能运行。通常,当再次运行单元测试时,相同的测试需要不同的时间来运行。我基本上是想找出瓶颈在哪里。下面是一个例子:

[ RUN      ] BandwidthAlgorithmTest.TerminalsOnly
[ OK ] BandwidthAlgorithmTest.TerminalsOnly (34 ms)
[ RUN ] BandwidthAlgorithmTest.AlohaAndTerminals
[ OK ] BandwidthAlgorithmTest.AlohaAndTerminals (38 ms)
[ RUN ] BandwidthAlgorithmTest.AllocatePeriodic
[ OK ] BandwidthAlgorithmTest.AllocatePeriodic (304 ms)
[ RUN ] BandwidthAlgorithmTest.AllocatePeriodic_Disabled
[ OK ] BandwidthAlgorithmTest.AllocatePeriodic_Disabled (152 ms)
[ RUN ] BandwidthAlgorithmTest.AllocateFair
[ OK ] BandwidthAlgorithmTest.AllocateFair (109 ms)
[ RUN ] BandwidthAlgorithmTest.AllocateFair_Disabled
[ OK ] BandwidthAlgorithmTest.AllocateFair_Disabled (64 ms)
[----------] 12 tests from BandwidthAlgorithmTest (2763 ms total)

[----------] 7 tests from BacklogHelperTest
[ RUN ] BacklogHelperTest.ChangeInrouteState
[ OK ] BacklogHelperTest.ChangeInrouteState (80613 ms)
[ RUN ] BacklogHelperTest.GetInvalidInroute
[ OK ] BacklogHelperTest.GetInvalidInroute (98471 ms)

最佳答案

如果您对 valgrind 的性能感到失望,可以尝试使用 Google 的初出茅庐的 AddressSanitizer。 http://blog.chromium.org/2011/06/testing-chromium-addresssanitizer-fast.html它需要使用特殊的编译器重新编译您的代码,但不需要更改源代码。

关于c++ - 单元测试需要很长时间才能运行。 Valgrind 问题? Gcov问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com