производительность — Как измерить задержку приложения c ++ с низкой задержкой

Мне нужно измерить задержку декодирования сообщений (от 3 до 5 раз) приложения с низкой задержкой.

Я использовал следующий метод,

1. Get time T1
2. Decode Data
3. Get time T2
4. L1 = T2 -T1
5. Store L1 in a array (size = 100000)
6. Repeat same steps for 100000 times.
7. Print array.
8. Get the 99% and 95% presentile for the data set.

Но у меня есть колебания между каждым тестом. Кто-нибудь может объяснить причину этого?
Не могли бы вы предложить какой-либо альтернативный метод для этого.

Заметка: Приложение работает в тесном цикле (приобретает 100% ЦП) и связывается с процессором через набор задач commad

3

Решение

Существует несколько различных способов сбора метрик производительности с использованием профилировщиков кода или существующих системных вызовов.

У NC State University есть хороший ресурс о различных типах таймеров и профилировщиков, а также о подходящем случае использования каждого из примеров на их сайте HPC. Вот.

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

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

0

Другие решения