В этом посте мы обсудим, как измерить время выполнения фрагмента кода в C#.
1. Использование Stopwatch Class
The Stopwatch класс из System.Diagnostics пространство имен используется для точного измерения прошедшего времени. В следующем примере показано, как измерить время выполнения с помощью Stopwatch учебный класс.
using System ;
using System . Diagnostics ;
using System . Threading ;
public class Example
public static void Main ( )
Stopwatch stopwatch = new Stopwatch ( ) ;
stopwatch . Start ( ) ;
Thread . Sleep ( 5000 ) ;
stopwatch . Stop ( ) ;
Console . WriteLine ( «Elapsed Time is <0>ms» , stopwatch . ElapsedMilliseconds ) ;
результат: Elapsed Time is 5000 ms
Чтобы получить прошедшее время в виде TimeSpan значение, мы можем сделать так:
using System ;
using System . Diagnostics ;
using System . Threading ;
public class Example
public static void Main ( )
Stopwatch stopwatch = new Stopwatch ( ) ;
stopwatch . Start ( ) ;
Thread . Sleep ( 5000 ) ;
stopwatch . Stop ( ) ;
TimeSpan ts = stopwatch . Elapsed ;
Console . WriteLine ( «Elapsed Time is <0:00>::.» ,
ts . Hours , ts . Minutes , ts . Seconds , ts . Milliseconds ) ;
результат: Elapsed Time is 00:00:05.14
2. Использование DateTime.Now() метод
В качестве альтернативы мы можем получить общее прошедшее время в миллисекундах, используя DateTime.Now . Обратите внимание, что этому решению не хватает высокопроизводительного измерения Stopwatch учебный класс.
Простейший пример использования отладчика в Visual Studio (C#)
using System ;
using System . Threading ;
public class Example
public static void Main ( )
DateTime start = DateTime . Now ;
Thread . Sleep ( 5000 ) ;
DateTime end = DateTime . Now ;
TimeSpan ts = ( end — start ) ;
Console . WriteLine ( «Elapsed Time is <0>ms» , ts . TotalMilliseconds ) ;
Прошедшее время 5005,1603 мс
3. Использование секундомера GetTimestamp() метод
Stopwatch GetTimestamp() Метод возвращает текущее количество тиков базового механизма таймера. 10 000 тиков составляют миллисекунду.
using System ;
using System . Threading ;
using System . Diagnostics ;
public class Example
public static void Main ( )
long start = Stopwatch . GetTimestamp ( ) ;
Thread . Sleep ( 5000 ) ;
long end = Stopwatch . GetTimestamp ( ) ;
Console . WriteLine ( «Elapsed Time is <0>ticks» , ( end — start ) ) ;
Прошедшее время 50111533 тиков
Вот и все, что касается измерения времени выполнения в C#.
Оценить этот пост
Средний рейтинг 4.69 /5. Подсчет голосов: 16
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
КАК ИЗМЕРИТЬ ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ, КОДА, МЕТОДА, ФУНКЦИИ, ЗАПРОСА | C# STOPWATCH | C# ПЛЮШКИ
Подписывайся
2 Комментарии
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
Просмотр комментариев
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Источник: www.techiedelight.com
Практическое руководство. Инструментирование автономного компонента .NET Framework и сбор данных о времени с помощью профилировщика из командной строки
Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
В этом разделе описывается использование средств профилирования командной строки Visual Studio для инструментирования компонентов платформа .NET Framework, .NET Core или .NET 5+, таких как .exe или . DLL-файл и для сбора подробных данных о времени.
Сведения о пути к Средствам профилирования см. в статье Указание пути к программам командной строки средств профилирования. На 64-разрядных компьютерах доступны 64- и 32-разрядные версии этих программ. Для использования программ командной строки профилировщика необходимо добавить путь к программам в переменную среды PATH окна командной строки или в саму команду.
Для сбора подробных сведений о времени из компонента .NET Framework с помощью метода инструментирования используйте программу VSInstr.exe для создания инструментированной версии компонента и программу VSPerfCLREnv.cmd для инициализации переменных среды профилирования. Затем запустите профилировщик.
При выполнении инструментированного компонента данные по времени автоматически сохраняются в файл данных. Вы можете приостановить и возобновить сбор данных в ходе сеанса профилирования.
Чтобы завершить сеанс профилирования, закройте целевое приложение и явным образом завершите работу профилировщика. В большинстве случаев рекомендуется сбрасывать переменные среды профилирования в конце сеанса.
Запуск сеанса профилирования
Чтобы начать профилирование с помощью метода инструментирования, выполните следующие действия.
- Откройте окно командной строки. Если необходимо, добавьте каталог средств профилировщика в переменную среды PATH. Во время установки этот путь не добавляется.
- Используйте программу VSInstr для создания инструментированной версии целевого приложения.
- Инициализируйте переменные среды профилирования .NET Framework. Тип: VSPerfClrEnv /traceon
- Запуск профилировщика. Тип: VSPerfCmd /start:trace /output: OutputFile [ Options ]
- Параметр /start:trace инициализирует профилировщик.
- Параметр /output: OutputFile является обязательным для параметра /start. OutputFile указывает имя и расположение файла данных профилирования (VSP-файла). С параметром /start:trace можно использовать любой из следующих параметров.
- Запустите целевое приложение из окна командной строки.
/user:[ Domain ] UserName | Указывает домен и имя пользователя учетной записи, которая является владельцем профилируемого процесса. Этот параметр является обязательным только в том случае, если процесс выполняется в качестве пользователя, отличного от пользователя, вошедшего в систему. Владелец процесса указан в столбце Имя пользователя на вкладке Процессы диспетчера задач Windows. |
/crossession | Включает профилирование процессов в других сеансах. Этот параметр является обязательным, если приложение ASP.NET выполняется в другом сеансе. Идентификатор сеанса указан в столбце Идентификатор сеанса на вкладке Процессы в диспетчере задач Windows. /CS можно указать как краткую версию /crosssession. |
/globaloff | Запускает профилировщик в состоянии приостановки сбора данных. Используйте параметр /globalon для возобновления профилирования. |
/counter: Config | Собирает данные от счетчика производительности процессора, указанного в Config . Сведения о счетчике добавляются в данные, собранные для каждого события профилирования. |
/wincounter: WinCounterPath | Задает счетчик производительности Windows, данные которого будут собираться во время профилирования. |
/automark: Interval | Используется с только с параметром /wincounter. Указывает время (в миллисекундах) между событиями сбора счетчика производительности Windows. Значение по умолчанию — 500 мс. |
/events: Config | Задает события трассировки событий для Windows (ETW), собираемые во время профилирования. События трассировки событий Windows собираются в отдельный ETL-файл. |
Управление сбором данных
Пока целевое приложение выполняется, вы можете управлять сбором данных путем запуска и остановки записи данных в файл данных профилировщика, используя параметры VSPerfCmd.exe. Управление сбором данных позволяет собирать данные на конкретных этапах выполнения программы, например при запуске или завершении работы приложения.
Чтобы запустить и остановить сбор данных, выполните приведенные ниже действия.
- Следующие пары параметров запускают и останавливают сбор данных. Каждый параметр необходимо указывать в отдельной командной строке. Сбор данных можно включать и отключать несколько раз.
ПараметрОписание /globalon /globaloff Запускает (/globalon) или останавливает (/globaloff) сбор данных для всех процессов. /processon: PID /processoff: PID Запускает ( /processon) или останавливает ( /processoff) сбор данных для процесса с указанным идентификатором процесса ( PID ). /threadon: TID /threadoff: TID Запускает ( /threadon) или останавливает ( /threadoff) сбор данных для потока с указанным идентификатором потока ( TID ).
Завершение сеанса профилирования
Чтобы завершить сеанс профилирования, закройте приложение, в котором выполняется инструментируемый компонент. Вызовите команду VSPerfCmd/shutdown, чтобы завершить работу профилировщика и закрыть файл данных профилирования. Команда VSPerfClrEnv /off сбрасывает переменные среды профилирования.
Чтобы завершить сеанс профилирования, выполните приведенные далее действия.
- Закройте целевое приложение.
- Завершите работу профилировщика. Тип: VSPerfCmd /shutdown
- (Необязательно) Сбросьте переменные среды профилирования. Тип: VSPerfClrEnv /off
Источник: learn.microsoft.com
Как проверить скорость работы функций в Visual Studio
Я хотел бы проверить, насколько быстро работают мои проекты. Было бы замечательно, если бы была возможность отмечать медленные места моей функции, поэтому я могу изменить свой код, чтобы повысить производительность. Я использую Microsoft Visual Studio 2012, и я знаю, что есть встроенный инструмент тестирования, но я не знаю, где его найти и, вероятно, как его использовать. Было бы здорово, если бы кто-то помог мне с этой проблемой.
Kalvis 16 март 2014, в 16:30
Поделиться
Поделиться:
performance
visual-studio-2012
4 ответа
Лучший ответ
Чтобы проверить время выполнения метода, вы можете использовать «Секундомер» . Также есть встроенный профилировщик VS 2013 в меню ANALYZE = > Profiler. Я не помню, в какой версии VS он был добавлен, но я думаю, что он существует в VS 2012. Таким образом, вы можете начать профилирование, использовать свое приложение на некоторое время, а затем проверить, какие операции потребовалось больше времени для excecute. UPDATE: VS 2017 теперь показывает время выполнения в миллисекундах для каждой строки или когда Run To Click используется во время сеанса отладки.
Andrii Litvinov 16 март 2014, в 15:38
Поделиться
VS 2017 now shows execution time in milliseconds for each line где это? Я запускал профайлеры Sampling и Instrumentation и не вижу этого.
Douglas Gaskell 02 март 2018, в 04:04
Andrii Litvinov 02 март 2018, в 07:57
В Visual Studio 2013 — Перейти к ANALYZE → Производительность и диагностика. Проверьте мастер производительности, чтобы вычислить требуемое время. Нажмите «Пуск». Теперь выберите — Инструментарий для измерения вызовов функций и подсчета. Нажмите «Далее.
Select — Будет показан один или несколько доступных проектов в этом названии вашего проекта. Нажмите» Далее. Снова нажмите «Далее». Проверка. Запустите профилирование после завершения мастера.
Теперь нажмите кнопку «Готово».
Источник: overcoder.net