Как узнать время выполнения программы в командной строке

Существует ли встроенный способ измерения времени выполнения команды в командной строке Windows?

user79078 23 мар ’09 в 14:13 2009-03-23 14:13
2009-03-23 14:13

34 ответа

Если вы используете Windows 2003 (обратите внимание, что Windows Server 2008 и более поздние версии не поддерживаются), вы можете использовать Windows Server 2003 Resource Kit, который содержит timeit.exe, который отображает подробную статистику выполнения. Вот пример времени команды «timeit -?»:

C:>timeit timeit -? Invalid switch -? Usage: TIMEIT [-f filename] [-a] [-c] [-i] [-d] [-s] [-t] [-k keyname | -r keyname] [-m mask] [commandline. ] where: -f specifies the name of the database file where TIMEIT keeps a history of previous timings. Default is .timeit.dat -k specifies the keyname to use for this timing run -r specifies the keyname to remove from the database. If keyname is followed by a comma and a number then it will remove the slowest (positive number) or fastest (negative) times for that keyname. -a specifies that timeit should display average of all timings for the specified key. -i specifies to ignore non-zero return codes from program -d specifies to show detail for average -s specifies to suppress system wide counters -t specifies to tabular output -c specifies to force a resort of the data base -m specifies the processor affinity mask Version Number: Windows NT 5.2 (Build 3790) Exit Time: 7:38 am, Wednesday, April 15 2009 Elapsed Time: 0:00:00.000 Process Time: 0:00:00.015 System Calls: 731 Context Switches: 299 Page Faults: 515 Bytes Read: 0 Bytes Written: 0 Bytes Other: 298

Вы можете получить TimeIt в Windows 2003 Resource Kit. Загрузите это здесь.

КАК ИЗМЕРИТЬ ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ, КОДА, МЕТОДА, ФУНКЦИИ, ЗАПРОСА | C# STOPWATCH | C# ПЛЮШКИ

15 апр ’09 в 15:44 2009-04-15 15:44
2009-04-15 15:44

В качестве альтернативы, в Windows PowerShell есть встроенная команда, которая похожа на команду времени Bash. Это называется «Мера-Команда». Вы должны убедиться, что PowerShell установлен на компьютере, на котором он запущен.

Measure-Command
Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 0 Ticks : 1318 TotalDays : 1.52546296296296E-09 TotalHours : 3.66111111111111E-08 TotalMinutes : 2.19666666666667E-06 TotalSeconds : 0.0001318 TotalMilliseconds : 0.1318
user590128 26 янв ’11 в 04:55 2011-01-26 04:55
2011-01-26 04:55

  1. Чтобы измерить время выполнения с точностью до сотой секунды в формате (чч: мм: сс.фф)
  2. Чтобы не пришлось скачивать и устанавливать пакет ресурсов
  3. Чтобы выглядеть как огромный ботаник DOS (кто не)

Попробуйте скопировать следующий скрипт в новый пакетный файл (например, timecmd.bat):

использование

Если вы поместите timecmd.bat в каталог вашего пути, вы можете вызвать его из любого места, например:

timecmd [your command]
C:>timecmd pause Press any key to continue . . . command took 0:0:1.18

Если вы хотите сделать перенаправление вывода, вы можете заключить команду в кавычки так:

timecmd «dir c:windows /s > nul»

Это должно обрабатывать команды, которые выполняются до — после полуночи, но вывод будет неправильным, если ваша команда выполняется в течение 24 часов или более.

Крутые команды консоли windows которые вы должны знать

Источник: stackru.com

Записки админа

Пример батника. Архивируем папку и смотрим сколько это заняло времени.

SET SourceDir = C:temp
SET DestDir = D:Backup

Call :SaveTime
«C:Program Files7-Zip7z» a -tzip %SourceDir%SourceDir.zip %DestDir%

Call :DiffTime
Echo Running time %DiffTime% sec
Echo.
Pause
Exit

:SaveTime
For /F «Tokens=1 Delims=.» %%i In (‘WMIC OS Get LocalDateTime^|Find «.»‘) Do Set $Time=%%i
Set $D0=%$Time:~6,2%
Set $H0=%$Time:~8,2%
Set $N0=%$Time:~10,2%
Set $S0=%$Time:~12,2%
GoTo :EOF

:DiffTime
For /F «Tokens=1 Delims=.» %%i In (‘WMIC OS Get LocalDateTime^|Find «.»‘) Do Set $Time=%%i
Set $D1=%$Time:~6,2%
Set $H1=%$Time:~8,2%
Set $N1=%$Time:~10,2%
Set $S1=%$Time:~12,2%

Читайте также:
Как сменить отчетный год в программе налогоплательщик юл

Set DiffTime=-1
If %$D1% EQU %$D0% Set /A DiffTime=%$S1%+(%$N1%*60)+(%$H1%*3600)-(%$H0%*3600)-(%$N0%*60)-%$S0%
GoTo :EOF

Источник: achurr.blogspot.com

Как измерить время выполнения команды в командной строке Windows?

Есть ли встроенный способ измерения времени выполнения команды в командной строке Windows?

ОТВЕТЫ

Ответ 1

Если вы используете Windows 2003 (обратите внимание, что Windows Server 2008 и более поздние версии не поддерживаются), вы можете использовать набор ресурсов Windows Server 2003 Resource Kit, который содержит timeit.exe, который отображает подробную статистику исполнения. Вот пример, с указанием команды «timeit -?»:

C:>timeit timeit -? Invalid switch -? Usage: TIMEIT [-f filename] [-a] [-c] [-i] [-d] [-s] [-t] [-k keyname | -r keyname] [-m mask] [commandline. ] where: -f specifies the name of the database file where TIMEIT keeps a history of previous timings. Default is .timeit.dat -k specifies the keyname to use for this timing run -r specifies the keyname to remove from the database. If keyname is followed by a comma and a number then it will remove the slowest (positive number) or fastest (negative) times for that keyname. -a specifies that timeit should display average of all timings for the specified key. -i specifies to ignore non-zero return codes from program -d specifies to show detail for average -s specifies to suppress system wide counters -t specifies to tabular output -c specifies to force a resort of the data base -m specifies the processor affinity mask Version Number: Windows NT 5.2 (Build 3790) Exit Time: 7:38 am, Wednesday, April 15 2009 Elapsed Time: 0:00:00.000 Process Time: 0:00:00.015 System Calls: 731 Context Switches: 299 Page Faults: 515 Bytes Read: 0 Bytes Written: 0 Bytes Other: 298

Вы можете получить TimeIt в наборе ресурсов Windows 2003. Загрузите его здесь.

Ответ 2

Кроме того, Windows PowerShell имеет встроенную команду, которая похожа на команду Bash time. Он называется «Measure-Command». Вы должны убедиться, что PowerShell установлен на машине, которая ее запускает.

Measure-Command
Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 0 Ticks : 1318 TotalDays : 1.52546296296296E-09 TotalHours : 3.66111111111111E-08 TotalMinutes : 2.19666666666667E-06 TotalSeconds : 0.0001318 TotalMilliseconds : 0.1318

Ответ 3

  • Чтобы измерить время выполнения до сотой доли секунды в формате (hh: mm: ss.ff)
  • Чтобы не загружать и устанавливать пакет ресурсов
  • Чтобы выглядеть как огромный DOS-ботаник (кто этого не делает)

Попробуйте скопировать следующий script в новый пакетный файл (например, timecmd.bat):

Использование

Если вы поместите timecmd.bat в каталог на своем пути, вы можете вызвать его из любого места, как это:

timecmd [your command]
C:>timecmd pause Press any key to continue . . . command took 0:0:1.18

Если вы хотите выполнить перенаправление вывода, вы можете процитировать команду следующим образом:

timecmd «dir c:windows /s > nul»

Это должно обрабатывать команды, которые запускаются от до — до полуночи, но вывод будет неправильным, если ваша команда работает 24 часа и более.

Ответ 4

Хе-хе, самым простым решением может быть следующее:

echo %time% YourApp.exe echo %time%

Это работает на каждой Windows из коробки.

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

set startTime=%time% YourApp.exe echo Start Time: %startTime% echo Finish Time: %time%

Ответ 5

Просто небольшое расширение ответа от Casey.K об использовании Measure-Command from PowerShell:

    Вы можете вызвать PowerShell из стандартной командной строки, например:

powershell -Command «Measure-Command »
Measure-Command
Или из командной строки:
powershell -Command «Measure-Command »

Конечно, вы можете обернуть это в файл script *.ps1 или *.bat .

Ответ 6

Однострочный ящик, используемый в Windows Server 2008 R2:

cmd /v:on /c «echo !TIME! echo !TIME!»

До тех пор, пока mycommand не требует котировок (которые винты с обработкой кодов cmd). /v:on означает, что два разных значения TIME будут оцениваться независимо, а не один раз при выполнении команды.

Читайте также:
Через какую программу майнить биткоины

Ответ 7

Если у вас открыто командное окно и вызовите команды вручную, вы можете отобразить временную метку в каждом приглашении, например.

prompt $d $t $_$P$G

Это дает вам что-то вроде:

Если у вас есть небольшая партия script, которая выполняет ваши команды, перед каждой командой должна быть пустая строка, например

(пустая строка)

myCommand.exe

(следующая пустая строка)

myCommand2.exe

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

MyBatchFile.bat > output.txt

Ответ 8

Так как другие рекомендуют устанавливать такие вещи, как freeware и PowerShell, вы также можете установить Cygwin, что даст вам доступ ко многим базовым Unix команды, такие как time:

[email protected]:~$ time sleep 5 real 0m5.012s user 0m0.000s sys 0m0.000s

Не уверен, сколько добавочных ресурсов Cygwin добавляет.

Ответ 9

Не так элегантно, как некоторые функции в Unix, но создайте cmd файл, который выглядит так:

Это покажет время начала и остановки:

The current time is: 10:31:57.92 Enter the new time: The current time is: 10:32:05.94 Enter the new time:

Ответ 10

Я использую бесплатное программное обеспечение под названием «GS Timer».

Просто создайте пакетный файл следующим образом:

timer yourapp.exe timer /s

Если вам нужен набор раз, просто подключите вывод таймера /s в файл .txt.

Разрешение составляет 0,1 секунды.

Ответ 11

Я использую Windows XP и по какой-то причине timeit.exe не работает для меня. Я нашел еще одну альтернативу — PTIME. Это работает очень хорошо.

C:> ptime ptime 1.0 for Win32, Freeware — http://www.pc-tools.net/ Copyright(C) 2002, Jem Berkes [email protected]> Syntax: ptime command [arguments . ] ptime will run the specified command and measure the execution time (run time) in seconds, accurate to 5 millisecond or better. It is an automatic process timer, or program timer. C:> ptime cd ptime 1.0 for Win32, Freeware — http://www.pc-tools.net/ Copyright(C) 2002, Jem Berkes [email protected]> === cd === C: Execution time: 0.015 s

Ответ 12

Пока он длится не более 24 часов.

Ответ 13

Там также TimeMem (март 2012):

Это утилита Windows, которая выполняет программу и отображает ее времени выполнения, использования памяти и статистики ввода-вывода. Это похоже на функциональность утилиты времени Unix.

Ответ 14

Это однострочный, который позволяет избежать отложенного расширения, что может нарушить определенные команды:

cmd /E /C «prompt $T$$ COMMAND_TO_MEASURE

Результат выглядит примерно так:

14:30:27.58$ . 14:32:43.17$ rem/

Для долгосрочных тестов замените $T на $D, $T и %TIME% на %DATE%, %TIME% , чтобы включить дату.

Чтобы использовать это внутри командного файла, замените %Z на %%Z .

Update

Вот улучшенный однострочный (без отложенное расширение):

cmd /E /C «prompt $D, $T$$ COMMAND_TO_MEASURE

Результат выглядит примерно так:

2015/09/01, 14:30:27.58$ rem/ . 2015/09/01, 14:32:43.17$ prompt

Этот подход не включает в себя процесс запуска нового cmd в результате и не включает команды prompt .

Ответ 15

Версия таймера Postfix:

таймаут 1 | TimeIt.cmd

Execution took ~969 milliseconds.

Скопируйте и вставьте это в какой-нибудь редактор, например, Notepad ++ и сохраните его как TimeIt.cmd:

Ответ 16

В случае, если кто-то еще пришел сюда, чтобы найти ответ на этот вопрос, есть функция Windows API, называемая GetProcessTimes() . Это не похоже на слишком много работы, чтобы написать небольшую программу на языке C, которая запускает команду, выполняет этот вызов и возвращает время процесса.

Ответ 17

Это комментарий/править для Люка Сэмпсона приятный timecmd.bat и ответьте на

По какой-то причине это дает мне результат всего целых секунд. что для меня бесполезно. Я имею в виду, что я запускаю timecmd pause, и это всегда приводит к 1,00 с, 2,00 с, 4,00 сек. даже 0.00 сек! Windows 7. — Камило Мартин Сен 25 ’13 в 16:00 «

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

Читайте также:
Как называется программа для работы с базами данных Microsoft access database

set options=»tokens=1-4 delims=. » (added comma)

%time% миллисекунды работают над моей системой, добавив, что ‘,’

(* потому что сайт не разрешает анонимный комментарий и не сохраняет хороший идентификатор, хотя я всегда использую тот же гостевой адрес электронной почты, который в сочетании с ipv6 ip и отпечатком от браузера должен быть достаточно, чтобы однозначно идентифицировать без пароля)

Ответ 18

  • В каталоге, где находится ваша программа, введите notepad mytimer.bat , нажмите «да», чтобы создать новый файл.
  • Вставьте код ниже, заменив YourApp.exe на свою программу, а затем сохраните.

Ответ 19

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

Ответ 20

Ответ 21

Следующий script использует только «cmd.exe» и выводит количество миллисекунд с момента создания конвейера до момента завершения процесса, предшествующего script. т.е. введите команду и переместите ее в script. Пример: «timeout 3 | runtime.cmd» должен давать что-то вроде «2990». Если вам нужен как выход во время выполнения, так и вывод stdin, перенаправление stdin перед каналом — ex: «dir/s 1 > temp.txt | runtime.cmd» выведет вывод команды «dir» в «temp.txt», и будет печатать время выполнения на консоли.

Ответ 22

Следующий script эмулирует * nix эпоху, но он локальный и региональный. Он должен обрабатывать случаи края календаря, включая високосные годы. Если Cygwin, значения эпохи можно сравнить, указав опцию Cygwin.

Я нахожусь в EST, и различие, как сообщается, составляет 4 часа, что относительно правильно. Есть несколько интересных решений для удаления TZ и региональных зависимостей, но ничего тривиального, что я заметил.

Ответ 23

Ответ driblio можно сделать немного короче (хотя и не очень читаемым)

Ответ 24

Вот мой метод, без преобразования и без ms. Полезно определять длительность кодирования (ограниченное до 24 часов):

Ответ 25

Для Luke Sampson nice script, поправки для отрицательных значений должны быть выполнены в обратном порядке, так как они могут сделать отрицательное значение 0 раньше.

Возьмем, например, время, когда начальное вычитание дает 1 час, 0 мин. и -29 секунд. Как сделано в сообщении, результат будет 1 час, -1 мин и 31 секунда. Если секунды исправлены до минут и минут до часов, вы получаете 31 секунду, 59 минут, 0 часов.

Ответ 26

Использование sub для возврата времени в сотых долях секунды

Ответ 27

«Lean and Mean» TIMER с региональным форматом, 24h и поддержкой смешанного ввода
Адаптация тела метода замены Aacini, без IF’s, только один FOR (мое региональное исправление)

1: Файл timer.bat размещен где-то в% PATH% или текущем каталоге

:: протестировать его, скопировать-вставить как выше, так и ниже секций кода

rem :AveYo: compact timer function with Regional format, 24-hours and mixed input support :timer Usage » call :timer [input — optional] [no — optional]» :i Result printed on second call, saved to timer_end if not defined timer_set (if not «%~1″==»» (call set «timer_set=%~1») else set «timer_set=%TIME: =0%») %~1″==»» (call set «timer_end=%~1») else set «timer_end=%TIME: =0%») tokens=1-6 delims=0123456789″ %%i in («%timer_end%%timer_set%») do (set CE=%%iset CS=%%lTE=!timer_end:%DE%=%%100)*100+1!» TS=!timer_set:%DS%=%%100)*100+1!» set/A «T=((((10!TE:%CE%=%%100)*60+1!%%100)-((((10!TS:%CS%=%%100)*60+1!%%100)» T=!T:-=8640000-!» set/A «cc=T%%100+100,T/=100,ss=T%%60+100,T/=60,mm=T%%60+100,hh=T/60+100» set «value=!hh:~1!%CE%!mm:~1!%CE%!ss:~1!%DE%!cc:~1!» %~2″==»» echo/!value! endlocal timer_end=%value%» timer_set post-104 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized»>

Ответ 28

мой код дает вам время работы в миллисекундах, до 24 часов, оно нечувствительно к региону и учитывает отрицательные значения, если код работает до полуночи. он использует задержанное расширение и должен быть сохранен в файле cmd/bat.

перед вашим кодом:

SETLOCAL EnableDelayedExpansion for /f «tokens=2 delims= tokens=2 delims= h=t2/3600000,t2%%=3600000,m=t2/60000,t2%%=60000» set t2=00000!t2! set t2=!t2:~-5! if %h% leq 9 (set h=0%h%) if %m% leq 9 (set m=0%m%) set t2=%h%:%m%:%t2:~0,2%.%t2:~2,3% ENDLOCAL

переменная t2 содержит ваше время выполнения, вы можете отобразить echo %t2% чтобы отобразить ее.

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

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