У меня проблемы с производительностью с 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 профилей. Каждый файл данных составляет около 1 млн строк.
lcov --combine
а также lcov --remove
шаги очень медленные. Около 45 секунд для каждого из них.
Есть ли способ ускорить этот шаг? При необходимости я могу использовать несколько потоков, и у меня достаточно памяти. Если есть другой инструмент, способный правильно выполнить эту комбинацию, я также был бы заинтересован (я пытался преобразовать файлы в Cobertura и выполнить слияние с помощью найденного мной скрипта Python, но он вылетает).
Если есть альтернатива полностью, мне тоже интересно. Я использовал gcovr, но с ним мне пришлось использовать несколько других инструментов, чтобы сделать комбинацию, и это не оптимально, но это намного быстрее.
Задача ещё не решена.
Других решений пока нет …