Visual studio как узнать время выполнения программы

Я использую случай, когда мне нужно отслеживать несколько переменных во время выполнения и получать их диапазон значений (например: -0.156 до 10.165). Можно ли это сделать в Visual Studio, где я указываю набор интересных переменных и после выполнения, я получаю диапазон значений?

Лучший ответ:

[После выяснения приемлемого решения, я размещаю свои комментарии здесь.]

Я работаю с программой, где мне нужно отслеживать значения времени выполнения нескольких переменных и извлекать диапазон значений, наблюдаемых во время выполнения. Наличие контрольной точки для каждой переменной и ручное отслеживание диапазона практически невозможно. Другое решение – использовать точки трассировки и использовать функцию “Действие” Visual Studio для вывода измененного значения на консоль. Это решение также нецелесообразно в моем случае, потому что точка трассировки поражена большим количеством времени, и это замедляет выполнение до такой степени, когда оно не будет завершено даже через 10-20 минут.

C# — Дата и время — 79

Единственным возможным решением (по моему мнению) является добавление кода для ручного отслеживания диапазона значений с использованием переменных и последующего вывода значения в конце выполнения. Это решение не будет масштабироваться, так как будет громоздко изменять код отслеживания всякий раз, когда изменяется базовый код. Но в настоящее время это было самое быстрое решение, которое я смог найти.

Источник: techarks.ru

Инструментирование автономного компонента .NET Framework и сбор данных о времени с помощью профилировщика из командной строки

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

В этом разделе описывается использование средств профилирования из командной строки Visual Studio для инструментирования компонента платформа .NET Framework, например .exe или . DLL-файл и для сбора подробных данных о времени.

Читайте также:
Car scanner как пользоваться программой на Андроид на русском

Для .NET Core и .NET 5+ см. статью Измерение производительности приложения из командной строки для сценариев инструментирования командной строки. VSInstr не поддерживается для двоичных файлов .NET Core и .NET 5+. Начиная с Visual Studio 2022 версии 17.6, мы рекомендуем использовать VSDiagnostics.exe и для платформа .NET Framework сценариев, так как он обеспечивает динамическое инструментирование.

Сведения о пути к Средствам профилирования см. в статье Указание пути к программам командной строки средств профилирования. На 64-разрядных компьютерах доступны 64- и 32-разрядные версии этих программ. Для использования программ командной строки профилировщика необходимо добавить путь к программам в переменную среды PATH окна командной строки или в саму команду.

Visual Studio 2022 | Установка, настройка, и начало работы

Чтобы собрать подробные данные о времени из платформа .NET Framework с помощью метода инструментирования, используйте средство VSInstr.exe для создания инструментированной версии компонента и средство VSPerfCLREnv.cmd для инициализации переменных среды профилирования. Затем запустите профилировщик.

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

Чтобы завершить сеанс профилирования, закройте целевое приложение и явным образом завершите работу профилировщика. В большинстве случаев рекомендуется сбрасывать переменные среды профилирования в конце сеанса.

Запуск сеанса профилирования

Чтобы начать профилирование с помощью метода инструментирования, выполните следующие действия.

  1. Откройте окно командной строки. Если необходимо, добавьте каталог средств профилировщика в переменную среды PATH. Во время установки этот путь не добавляется.
  2. Используйте программу VSInstr для создания инструментированной версии целевого приложения.
  3. Инициализируйте переменные среды профилирования .NET Framework. Тип: VSPerfClrEnv /traceon
  4. Запуск профилировщика. Тип: 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 сбрасывает переменные среды профилирования.

    Чтобы завершить сеанс профилирования, выполните приведенные далее действия.

    1. Закройте целевое приложение.
    2. Завершите работу профилировщика. Тип: VSPerfCmd /shutdown
    3. (Необязательно) Сбросьте переменные среды профилирования. Тип: VSPerfClrEnv /off

    Источник: learn.microsoft.com

    Как узнать, сколько времени потребовалось для запуска моей программы в Visual Studio Code?

    Есть ли способ узнать, сколько времени потребовалось для выполнения / завершения сценария в VS Code?

    Я ищу такое сообщение:

    Program finished in 30ms
    Niel Agneessens 8 Авг 2019 в 12:29

    Используйте команду оболочки для определения времени выполнения (Unix time ), для python используйте модуль timeit

    8 Авг 2019 в 12:35

    4 ответа

    Лучший ответ

    Читайте также:
    Python открыть файл программой по умолчанию

    Когда ваш скрипт запускается:

    import time start_time = time.time() do something # here your actual code/routine print(«Process finished — %s seconds —» % (time.time() — start_time))
    Maeaex1 8 Авг 2019 в 12:34

    Вы можете создать простую функцию декоратора для определения времени ваших функций.

    Я предлагаю использовать time.monotonic (это часы, которые не идут назад), чтобы увеличить точность.

    Axois 8 Авг 2019 в 13:26

    Чтобы найти время выполнения вашей функции, предпочтительнее time.perf_counter (), а не time.time (). Подробнее см. Ссылку ниже

    Вы можете создать свой собственный таймер, используя что-то вроде этого

    from time import perf_counter def f(a1,a2): return a1 * a2 def timer(f,*args): start = perf_counter() f(*args) return (1000 * (perf_counter()-start)) # this returns time in ms a1 = np.random.rand(100) a2 = np.random.rand(100) np.mean([timer(f,a1,a2) for _ in range(100)]) # average out result for 100 runs

    Если вы используете ноутбук jupyter, используйте следующие

    %%timeit f(a1,a2)
    Abhishek Sharma 5 Ноя 2020 в 18:00

    Самый простой способ добиться этого — просто кодировать время для программирования.

    from time import time start_time = time() main() # n staffs passed_time = time() — start_time print(f»It took «)

    Источник: question-it.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru