Лучший способ регрессировать ухудшение во время выполнения в C-коде - PullRequest
0 голосов
/ 31 августа 2011

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

Допустим, в моем программном обеспечении, если есть 100 высокоуровневых функций, я хотел бы увидеть, какие функции ухудшились в выпусках во время выполнения. Предполагая, что я запускаю один и тот же тест в разных выпусках и регистрирую время выполнения функций верхнего уровня (100 уровней) в текстовом файле для сравнения. Мало кто в других потоках прокомментировал использование макроса, но перенос 100 вызовов функций вокруг макроса уродлив и болезнен. Любой лучший способ решить эту проблему.

Ответы [ 2 ]

1 голос
/ 31 августа 2011
  1. Время ваших функций и запишите результат в файл журнала.
  2. Сравните файл журнала для каждого выпуска с результатом более ранних выпусков.

Вы также можете использовать для работы автоматические инструменты, например gprof .Другие инструменты профилирования перечислены в Википедии

1 голос
/ 31 августа 2011

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

...