Разыскивается библиотека тестирования производительности кода на C++?

Есть программа, для реализации функционала которой существует множество алгоритмов с множеством параметров. Все алгоритмы работают в однопоточной среде. Необходимо оценить быстродействие каждого из них.


Тут полагается вспомнить, что каждой среде свои методы замера времени: где-то это QueryPerformanceFrequency/GetSystemTime, где-то clock_gettime/gettimeofday/boost::timer/clock. На некоторых платформах срабатывает rdtsc/HPET. Для каждого случая из этих функций переизобретается велосипед.


Ожидается синтаксис по принципу юнит-тестов:
TEST(DecompessTest, 100, 10) {
    CASE (Compressor1) {
        decompress(data1, TYPE_ONE);
    }

    CASE (Compressor2) {
        decompress(data2, TYPE_TWO);
    }
}



После запуска каждый CASE теста прогоняется 1000 раз, причём время замеряется для каждой сотни прогонов. В конце определяется среднее арифметическое времени выполнения каждого CASE и стандартное отклонение и выводится на стандартный поток вывода.


DecompessTest:
Compressor1: 52100 ns (±150 ns)
Compressor2: 67500 ns (±205 ns)



Обычные профайлеры в этом случае не интересуют: тут не стоит задача нахождения слабого звена в программе путём контроля времени выполнения всего подряд на всех уровнях вложенности. Интересует лишь среднее время выполнения участка со стандартным отклонением, на сборке с полной оптимизацией без отладочных символов.


Есть ли какое-нибудь кроссплатформенное готовое решение для реализации вышеописанного?
  • Вопрос задан
  • 2992 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Daminion
Может DTrace подойдет?
Ответ написан
Комментировать
Lockal
@Lockal Автор вопроса
А ларчик просто открывался! Нашёл самый полный ответ на вопрос: QBENCHMARK из комплекта Qt testlib.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы