Иногда вам может потребоваться узнать общее время выполнения запущенной вами команды или программы. Чтобы оптимизировать сценарий или программу, важно знать, сколько времени требуется для завершения выполнения. Это поможет вам сравнить общее время выполнения программы A и программы B и оптимизировать код, особенно если вы профессиональный разработчик программного обеспечения, аналитик или тестировщик программного обеспечения.
Измерение общего времени выполнения сценария или процесса - один из наиболее важных аспектов оптимизации производительности. В этой статье обсуждаются различные методы определения общего времени выполнения программы, сценария или команды в Windows.
Найдите общее время выполнения программы или команды
Использование PowerShell
PowerShell включает встроенный Измерение-команда
командлет, который помогает измерить время, необходимое для запуска блоков скриптов, командлетов или даже внешних программ. Вот пример командной строки PowerShell, которая измеряет время, необходимое для пинг google.com
командная строка для завершения:
Команда измерения ping google.com
После вывода команды ping вы увидите следующую статистику внизу.
Дней: 0 Часы: 0 Минуты: 0 Секунды: 3 Миллисекунды: 66 Тактов: 30660017 Всего дней: 3,5486130787037E-05 Всего часов: 0,000851667138888889 Всего минут: 0,0511000283333333 Всего секунд: 3,0660017 Всего миллисекунд: 3066.0017
Узнать больше о Мера-объект в Microsoft Docs.
Выполнение команды заняло 3,06 секунды. В Out-Host
аргумент, если он опущен, PowerShell скрывает вывод (из пинг
command) в консоли - вы увидите только статистику выполнения.
Если у вас длинная командная строка или вам нужно выполнить несколько команд, вы можете поместить их в пакетный файл Windows, а затем запустить его с помощью PowerShell. Вот пример:
Measure-Command Out-HostСВЯЗАННЫЙ: Найдите количество слов, символов и строк в текстовом файле с помощью PowerShell
Использование VBScript
Вот простой сценарий VBScript, который вычисляет общее время выполнения командной строки, программы или пакетного файла.
Установите WshShell = WScript.CreateObject ('WScript.Shell') sCmd = chr (34) & 'D: Batch Files Backup.bat' & chr (34) dtmStartTime = Timer Return = WshShell.Run (sCmd, 1, true ) Wscript.Echo 'Задача завершена за' & Раунд (Таймер - dtmStartTime, 2) & 'секунды.'
- Скопируйте указанный выше код в Блокнот
- Сохраните файл как
exec_timer.vbs
. - Во второй строке, которая начинается с
sCmd
измените программу, которую хотите запустить, т.е. замените'D: Пакетные файлы Backup.bat'
в приведенном выше примере с приложением или пакетом, который вы хотите запустить. - Сохраните файл и закройте Блокнот.
- Дважды щелкните файл VBScript, чтобы запустить его.
VBScript запускает командный файл, команду или программу. После завершения работы отображается общее время выполнения (в секундах).
Использование TimeIt.exe из Resource Kit Tools
TimeIt.exe
является частью Windows Server 2003 Набор ресурсов ( зеркальная ссылка ) инструмент, показывающий время выполнения программы или команды. Эта программа также отлично работает в Windows 10.
Информационный файл: rktools.exe - SHA256 - 6260d75a2cb30201c5424defec3ba505edb92b91802825e2fd6eb9bd58ed5cca
- После загрузки RK Tools откройте rktools.exe с помощью 7-Zip.
- Затем откройте внутри
rktools.msi
- найти
TimeIt.exe
и распаковать в папку.
Вот несколько примеров, чтобы запустить команду или пакетный файл и измерить их общее время выполнения:
timeit.exe ping google.com
timeit.exe C: Batch Files Измерение времени выполнения команды backup.bat
TimeIt показывает время выхода из процесса и прошедшее время, среди других деталей. Когда я проверил, записано байтов значение не соответствовало размеру выходного файла. Но информация о прочитанных / записанных байтах не является предметом обсуждения в этой статье.
Больше информации
При написании статьи о извлечение звука из видео файла с помощью FFmpeg.exe, я подумал об измерении времени выполнения команды. Я использовал приведенный выше сценарий для измерения времени, затраченного на извлечение аудио в формате MP3 из файла фильма с помощью инструмента командной строки FFmpeg.exe.
Первая партия включала эту командную строку:
ffmpeg -i 'C: Movies Movie.mp4' -ss 01:20:00 -t 00:00:20 -codec: a libmp3lame -ab 128000 'D: output-1.mp3'
Вторая партия включала эту командную строку:
ffmpeg -ss 01:20:00 -i 'C: Movies Movie.mp4' -t 00:00:20 -codec: a libmp3lame -ab 128000 'D: output-2.mp3'
Как видите, количество аргументов командной строки и соответствующие значения абсолютно одинаковы. Единственная разница в том, что -ss
(начальная точка) параметр помещается перед -я
(входной файл) параметр во втором командном файле. Метод называется Поиск ввода согласно Документация по FFmpeg.exe . 1-й способ называется Поиск выхода , при этом -я
(входной файл) параметр появляется перед -ss
параметр.
- В документации FFmpeg говорится, что метод поиска ввода намного быстрее, чем поиск вывода, потому что при использовании первого метода FFmpeg.exe перескакивает (ищет) непосредственно к упомянутой начальной точке во входном файле и начинает декодирование с этой точки.
- В то время как метод поиска вывода сначала открывает файл, начинает декодирование с
00:00:00
, а затем отбрасывает данные до тех пор, пока они не достигнут-ss
Начальная точка01:20:00
. Таким образом, системные ресурсы (ЦП, память и дисковый ввод-вывод) тратятся впустую, а время выполнения увеличивается при использовании метода поиска вывода.
Документация FFmpeg.exe верна. Когда я тестировал, поиск входных данных выполнялся намного быстрее, чем метод поиска выходных данных.
- Первая команда (поиск вывода) заняла 20,48 секунды.
- Вторая команда (поиск ввода) заняла 16,62 секунды.
Если вы знаете какие-либо другие методы измерения времени выполнения процесса, скрипта или команды, дайте знать.
Одна небольшая просьба: если вам понравился этот пост, поделитесь им?
Одна «крошечная» публикация от вас серьезно помогла бы росту этого блога. Несколько отличных предложений:- Приколи это!
- Поделитесь этим в своем любимом блоге + Facebook, Reddit
- Напишите об этом в Твиттере!