Время выполнения приложения в Visual Studio
Я решаю некоторые задачи алгоритма в c# и запускаю их как консольное приложение.
Чтобы проверить эффективность приложений, я хотел бы посмотреть, каково их время выполнения.
В настоящее время я печатаю время в начале программы и в конце и вычисляю разницу во времени ,но есть ли способ уменьшить эффект наблюдателя ?
Какой-то встроенный инструмент/плагин, о котором я не знаю ?
3 ответов:
Вы должны использовать класс
Stopwatch, который специально разработан для этого.Чтобы избежать измерения времени JIT, вы также должны выполнить каждый алгоритм по крайней мере один раз, прежде чем измерять что-либо, чтобы у JIT было время для выполнения.
При измерении алгоритмов вы должны выполнить каждый из них сотни раз и взять среднее время выполнения.
Наиболее важным источником задержки, обусловленной эффектом наблюдателя, является сама печать. Другой потенциальный замедлитель-форматирование текста отладочного сообщения. Поэтому я предлагаю следующее:
- Если вы можете предвидеть количество циклов и количество этапов в цикл, создайте массив для хранения информации о времени. Если не использовать динамический список.
- во время выполнения сохраняйте время и дополнительную информацию в этом массиве или список.
- Если возможно, не храните сообщения вместе со временем, но коды, для Пример 1=Стадия 1, 2=стадия 2 и т. д.
- в конце выполнения сбросьте всю информацию на экран или файл и отформатируйте сообщения по мере необходимости.
Используйтекласс секундомера . Посмотрите на метод ниже для примера.
using System.Diagnostics; public void yourAlgorithm() { Stopwatch timePerParse = Stopwatch.StartNew(); /** -- TODO --**/ timePerParse.Stop(); Console.WriteLine(timePerParse.ElapsedMilliseconds); }
Comments