Найти функции, ответственные за большие различия во времени выполнения - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над тем, что по сути является конвейером обработки данных, чем работает на Windows и Linux. Этот конвейер состоит из большого числа функций, для выполнения которых в среднем требуется около 15 мсек при заданном входе. Однако недавно я провел некоторые статистические измерения и обнаружил, что более 1000 прогонов с одним и тем же вводом время выполнения варьировалось от 10 мс до 30 мс. Хотя мне не нужно предоставлять доказуемые гарантии времени выполнения, наши клиенты ожидают, что время выполнения конвейера не будет меняться более чем на 1 или 2 миллисекунды. Так что теперь я застрял, пытаясь выяснить, что является причиной вариации, и я действительно не знаю, как даже начать здесь.

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

Есть ли какой-нибудь плагин tool / library / compiler, который может помочь мне найти функции, ответственные за это большое изменение во времени выполнения?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...