Тестирование производительности участка кода
Тестирование производительности участка кода. Оценка производительности алгоритма
Иногда бывает необходимость протестировать алгоритм или часть кода, чтоб узнать "не здесь ли тормозит?". А использование профайлера слишком монструозно или не практично. Тогда можно замерить производительность участка кода, прямо в коде. Для этого есть много методов, и все они не без погрешностей.
[spoiler]
Чем могут быть вызваны погрешности?
Операционные системы многозадачны, и чаще имеют архитектору вытесняющей многозадачности по приоритетам. Система может отдать процессорное время другому процессу, а не нашему тестируемому. Также приложение вовремя вызова системных сервисов может находится в , и это тоже влияет на результат замера.
Также сам метод имеет определенную точность, и погрешность.=)
Поэтому для большой точности замера, поставьте приоритет реального времени Вашему процессу, но это может решить лишь проблему с вытеснением другим процессом. Для решение проблем с режимами нужно использовать другие методы, такие например как GetSystemTime для Windows, но у нее большие погрешности во времени замера.
Следует, также "прогнать" замеры несколько раз, взять средний результат, так, как погрешности все равно будут и от них никуда не деться.=)
И так самими методы:
Сразу прошу не обижаться, на большое количество комментов в коде, я посчитал, что так лучше ИМХО)))
PS
Все представленные здесь методы так или иначе завязаны на тактах процессора.
Если Вам нужно протестить много кода, лучше задумать об использовании профайлера, к примеру
Полезные ссылки:
Иногда бывает необходимость протестировать алгоритм или часть кода, чтоб узнать "не здесь ли тормозит?". А использование профайлера слишком монструозно или не практично. Тогда можно замерить производительность участка кода, прямо в коде. Для этого есть много методов, и все они не без погрешностей.
[spoiler]
Чем могут быть вызваны погрешности?
Операционные системы многозадачны, и чаще имеют архитектору вытесняющей многозадачности по приоритетам. Система может отдать процессорное время другому процессу, а не нашему тестируемому. Также приложение вовремя вызова системных сервисов может находится в , и это тоже влияет на результат замера.
Также сам метод имеет определенную точность, и погрешность.=)
Поэтому для большой точности замера, поставьте приоритет реального времени Вашему процессу, но это может решить лишь проблему с вытеснением другим процессом. Для решение проблем с режимами нужно использовать другие методы, такие например как GetSystemTime для Windows, но у нее большие погрешности во времени замера.
Следует, также "прогнать" замеры несколько раз, взять средний результат, так, как погрешности все равно будут и от них никуда не деться.=)
И так самими методы:
|
Сразу прошу не обижаться, на большое количество комментов в коде, я посчитал, что так лучше ИМХО)))
PS
Все представленные здесь методы так или иначе завязаны на тактах процессора.
Если Вам нужно протестить много кода, лучше задумать об использовании профайлера, к примеру
Полезные ссылки:
15.01.2015 14:00:21
Хорошо было бы увидеть скрин с работой программы, что бы увидеть разницу в этих методах)
15.01.2015 18:20:28
К публикации приложена ссылка на исходные коды проекта (в конце статьи)
4880
09.05.2012
2



.