Как лучше всего измерить время выполнения функции?[дубликат]
-
22-08-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
Очевидно, я могу сделать и DateTime.Now.After
- DateTime.Now.Before
но должно быть что-то более сложное.
Любые советы приветствуются.
Решение
System.Environment.TickCount и Система.Диагностика.Секундомер class — два, которые хорошо работают для более высокого разрешения и простоты использования.
Смотрите также:
Другие советы
Я бы вам обязательно посоветовал посмотреть System.Diagnostics.Stopwatch
И когда я поискал больше о секундомере, я нашел этот сайт;
Там упоминалась еще одна возможность
Процесс.TotalProcessorTime
Используйте профилировщик
Тем не менее ваш подход будет работать, но если вы ищете более сложные подходы.Я бы предложил использовать Профилировщик С#.
Преимущества, которые они имеют:
- Вы даже можете получить распад уровня заявлений
- Никаких изменений в вашей кодовой базе не требуется.
- Приборы обычно требуют меньше накладных расходов, поэтому можно получить очень точные результаты.
Есть много доступных Открытый исходный код также.
Tickcount — это хорошо, однако я предлагаю запустить его 100 или 1000 раз и вычислить среднее значение.Не только делает его более измеримым - в случае действительно быстрых/коротких функций, но и помогает справиться с некоторыми разовыми эффектами, вызванными накладными расходами.