Я создал набор тестов для проекта, над которым я работаю. Мои юнит-тесты выполнялись очень быстро ... 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)