source

Windows 명령줄에서 명령 실행 시간을 측정하려면 어떻게 해야 합니까?

ittop 2023. 4. 22. 10:31
반응형

Windows 명령줄에서 명령 실행 시간을 측정하려면 어떻게 해야 합니까?

Windows 명령줄에서 명령 실행 시간을 측정하는 기본 제공 방법이 있습니까?

에는 PowerShell이라는 .Measure-CommandPowerShell PowerShell power 、 PowerShell 、 PowerShell 、 PowerShell 。

PS> Measure-Command { echo hi }

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

Measure-Command는 명령어의 출력을 캡처합니다.로 리다이렉트할 수 .Out-Default:

PS> Measure-Command { echo hi | Out-Default }
hi

Days              : 0
...

Makotoe의 코멘트대로 오브젝트를 반환하기 때문에 측정된 시간은 여러 필드로 인쇄됩니다.다음을 사용하여 오브젝트의 형식을 타임스탬프 문자열로 지정할 수 있습니다.ToString():

PS> (Measure-Command { echo hi | Out-Default }).ToString()
hi
00:00:00.0001318

가 " " "에 되어 있는 Measure-Command색상을 하여 " " " " 를 사용합니다.[Console]::ResetColor()하다

네가 원한다면

  1. 실행 시간을 100분의 1초까지 측정하려면 (hh:mm:ss.ff 형식)
  2. 리소스 팩을 다운로드하여 설치하지 않으려면 다음과 같이 하십시오.
  3. 거대한 DOS 괴짜처럼 보이기 위해 (안하는 사람)

다음 스크립트를 새 배치 파일(예: timecmd.bat)에 복사해 보십시오.

@echo off
@setlocal

set start=%time%

:: Runs your command
cmd /c %*

set end=%time%
set options="tokens=1-4 delims=:.,"
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100

set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %hours% lss 0 set /a hours = 24%hours%
if 1%ms% lss 100 set ms=0%ms%

:: Mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)

사용.

경로 내의 디렉토리에 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시간 이상 실행되면 출력이 잘못됩니다.

헤헤, 가장 간단한 해결책은 다음과 같습니다.

echo %time%
YourApp.exe
echo %time%

이것은, 모든 Windows에서 즉시 사용할 수 있습니다.


응용 프로그램에서 콘솔 출력을 사용하는 경우 시작 시간을 임시 변수에 저장하는 것이 편리할 수 있습니다.

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

케이시의 답변을 조금 더 확대해 보겠습니다.PowerShell사용에 대한 K:

  1. 표준 명령 프롬프트에서 다음과 같이 PowerShell을 호출할 수 있습니다.

    powershell -Command "Measure-Command {echo hi}"
    
  2. 은 먹히지만, 할 수 .| Out-DefaultPowerShell 서 power power power power power power 。

    Measure-Command {echo hi | Out-Default}
    

    또는 명령 프롬프트:

    powershell -Command "Measure-Command {echo hi | Out-Default}"
    

*.ps1 ★★★★★★★★★★★★★★★★★」*.bat.

윈도우즈 2003(윈도우 서버 2008 이상은 지원되지 않음)을 사용하는 경우 윈도우즈 서버 2003 리소스 키트를 사용할 수 있습니다. 이 리소스 키트에는 시간 제한이 포함되어 있습니다.자세한 실행 통계를 표시하는 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에서 얻을 수 있습니다.Microsoft 다운로드 센터에서는 직접 다운로드할 수 없지만 archive.org - Windows Server 2003 Resource Kit Tools에서 구할 수 있습니다.

Windows Server 2008 R2 에서는, 다음의 1 회선을 사용하고 있습니다.

cmd /v:on /c "echo !TIME! & *mycommand* & echo !TIME!"

my 명령어에 따옴표가 필요하지 않은 경우(cmd의 따옴표 처리로 스크류)/v:on는 명령어 실행 시 두 개의 다른 TIME 값을 한 번이 아니라 독립적으로 평가할 수 있도록 하는 것입니다.

명령 창을 열고 명령을 수동으로 호출하는 경우 각 프롬프트에 타임스탬프를 표시할 수 있습니다.

prompt $d $t $_$P$G

다음과 같은 정보를 얻을 수 있습니다.

23.03.2009 15:45:50,77

C:\>

명령을 실행하는 작은 배치 스크립트가 있는 경우 각 명령어 앞에 빈 행을 입력합니다.

(빈 줄)

my Command를 선택합니다.실행

(다음 빈 줄)

myCommand2.실행

프롬프트의 시간 정보를 기준으로 각 명령어의 실행 시간을 계산할 수 있습니다.출력을 텍스트 파일로 파이핑하여 상세 분석을 수행하는 것이 가장 좋습니다.

MyBatchFile.bat > output.txt

다른 사용자가 프리웨어나 PowerShell 등의 설치를 권장하고 있으므로 Cygwin을 설치하면 다음과 같은 많은 기본 Unix 명령에 액세스할 수 있습니다.

abe@abe-PC:~$ time sleep 5

real    0m5.012s
user    0m0.000s
sys 0m0.000s

Cygwin이 얼마나 많은 오버헤드를 추가하는지 확실하지 않다.

Unix의 일부 기능만큼 우아하지는 않지만 다음과 같은 cmd 파일을 만듭니다.

@echo off
time < nul
yourexecutable.exe > c:\temp\output.txt
time < nul
rem on newer windows system you can try time /T

다음과 같이 시작 및 중지 시간이 표시됩니다.

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

저는 'GS 타이머'라는 프리웨어를 사용합니다.

다음과 같은 배치 파일을 만듭니다.

timer
yourapp.exe
timer /s

시간이 필요한 경우 timer /s 출력을 .txt 파일로 파이프하기만 하면 됩니다.

Gammadyne의 무료 DOS 유틸리티는 이쪽에서 입수할 수 있습니다.


해상도는 0.1초입니다.

Windows XP 를 사용하고 있습니다만, 어떠한 이유로 시간이 정해져 있습니다.exe를 사용할 수 없습니다.다른 대안을 찾았어요. PTIME. 아주 잘 작동해요.

http://www.pc-tools.net/win32/ptime/

예 -

C:\> ptime

ptime 1.0 for Win32, Freeware - http://www.pc-tools.net/
Copyright(C) 2002, Jem Berkes <jberkes@pc-tools.net>

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 <jberkes@pc-tools.net>

===  cd ===
C:\

Execution time: 0.015 s

24시간 이상 지속되지 않는 한...

@echo off

set starttime=%TIME%
set startcsec=%STARTTIME:~9,2%
set startsecs=%STARTTIME:~6,2%
set startmins=%STARTTIME:~3,2%
set starthour=%STARTTIME:~0,2%
set /a starttime=(%starthour%*60*60*100)+(%startmins%*60*100)+(%startsecs%*100)+(%startcsec%)

:TimeThis
ping localhost 

set endtime=%time%
set endcsec=%endTIME:~9,2%
set endsecs=%endTIME:~6,2%
set endmins=%endTIME:~3,2%
set endhour=%endTIME:~0,2%
if %endhour% LSS %starthour% set /a endhour+=24
set /a endtime=(%endhour%*60*60*100)+(%endmins%*60*100)+(%endsecs%*100)+(%endcsec%)

set /a timetaken= ( %endtime% - %starttime% )
set /a timetakens= %timetaken% / 100
set timetaken=%timetakens%.%timetaken:~-2%

echo.
echo Took: %timetaken% sec.

TimeMem(2012년 3월)도 있습니다.

프로그램을 실행하여 실행 시간, 메모리 사용량 및 IO 통계를 표시하는 Windows 유틸리티입니다.Unix time 유틸리티와 기능이 비슷합니다.

여기 a가 있습니다.

포스트픽스 타이머 버전:

사용 예:

타임아웃 1 | TimeIt.cmd

Execution took  ~969 milliseconds.

예를 들어 Notepad++와 같은 편집기에 복사하여 붙여넣고 TimeIt.cmd로 저장합니다.

:: --- TimeIt.cmd ----
    @echo off
    setlocal enabledelayedexpansion

    call :ShowHelp

    :: Set pipeline initialization time
    set t1=%time%

    :: Wait for stdin
    more

    :: Set time at which stdin was ready
    set t2=!time!


    :: Calculate difference
    Call :GetMSeconds Tms1 t1
    Call :GetMSeconds Tms2 t2

    set /a deltaMSecs=%Tms2%-%Tms1%
    echo Execution took ~ %deltaMSecs% milliseconds.

    endlocal
goto :eof

:GetMSeconds
    Call :Parse        TimeAsArgs %2
    Call :CalcMSeconds %1 %TimeAsArgs%

goto :eof

:CalcMSeconds
    set /a %1= (%2 * 3600*1000) + (%3 * 60*1000) + (%4 * 1000) + (%5)
goto :eof

:Parse

    :: Mask time like " 0:23:29,12"
    set %1=!%2: 0=0!

    :: Replace time separators with " "
    set %1=!%1::= !
    set %1=!%1:.= !
    set %1=!%1:,= !

    :: Delete leading zero - so it'll not parsed as octal later
    set %1=!%1: 0= !
goto :eof

:ShowHelp
    echo %~n0 V1.0 [Dez 2015]
    echo.
    echo Usage: ^<Command^> ^| %~nx0
    echo.
    echo Wait for pipe getting ready... :)
    echo  (Press Ctrl+Z ^<Enter^> to Cancel)
goto :eof

^ - 'Daniel Sparks' 버전 기반

있는 의 , 「Windows 」를 만 하면 .bash부쉬하다.할 수 없는 를 직접할 수 과 같이).time명령)을 실행합니다.이제 명령어를 실행하는 것만큼이나 쉽게 타이밍을 잡을 수 있습니다.

# The clause <your-command> (without the angle brackets) denotes the command you want to run.
$ time <your-command>

주의: 를 실행하면 Bash 모드를 쉽게 종료하고 메인스트림 셸로 돌아갈 수 있습니다.exitBash 、 Bash 、

: Windows 10)을 해 본 했습니다.Measure-Command불필요한 통계정보를 생성할 수 있습니다.이것이 당신에게도 효과가 있기를 바랍니다.

measure-time을 대체하는 방법은 단순히 "Get-Date"입니다.출력 전송 등의 번거로움이 없습니다.

$start = Get-Date
[System.Threading.Thread]::Sleep(1500)
$(Get-Date) - $start

출력:

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 506
Ticks             : 15060003
TotalDays         : 1.74305590277778E-05
TotalHours        : 0.000418333416666667
TotalMinutes      : 0.025100005
TotalSeconds      : 1.5060003
TotalMilliseconds : 1506.0003

이는 특정 명령을 방해할 수 있는 지연된 확장을 방지하는 단일 라인입니다.

cmd /E /C "prompt $T$$ & echo.%TIME%$ & COMMAND_TO_MEASURE & for %Z in (.) do rem/ "

출력은 다음과 같습니다.

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

의 경우는, 「」를 치환해 주세요.$T타타에 $D, $T ★★★★★★★★★★★★★★★★★」%TIME%타타에 %DATE%, %TIME%날짜를 포함합니다.

배치 파일 내에서 사용하려면 를 바꿉니다.%Z타타에 %%Z.


갱신하다

다음은 개선된 원라이너입니다(확장 지연 없음).

cmd /E /C "prompt $D, $T$$ & (for %# in (.) do rem/ ) & COMMAND_TO_MEASURE & for %# in (.) do prompt"

출력은 다음과 같습니다.

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

되어 있지 않습니다.cmd 「 」, 「 」, 「 」는 되지 않습니다.prompt명령어

이 질문에 대한 답을 찾는 다른 사람이 여기에 온 경우라고 불리는 Windows API 함수가 있습니다.명령어를 시작하고 이 호출을 수행하여 프로세스 시간을 반환하는 작은 C 프로그램을 작성하는 것은 그다지 어렵지 않은 작업인 것 같습니다.

  1. 에 "Directory"를 합니다.notepad mytimer.bat그렇다, 그렇다

  2. , 이 코드를 붙여넣다로 바꿉니다.YourApp.exe프로그램을 사용하여 저장한 후 저장하십시오.

    @echo off
    date /t
    time /t
    YourApp.exe
    date /t
    time /t
    
  3. 「」라고 입력합니다.mytimer.bat입력해 주세요.

여기 제 방법이 있습니다.변환도 없고 ms도 없습니다.부호화 기간을 결정하는 것은 편리합니다(단, 24시간 한정).

@echo off

:start
REM Start time storage
set ST=%time%
echo Process started at %ST%
echo.
echo.

REM Your commands
REM Your commands
REM Your commands

:end
REM Start Time Definition
for /f "tokens=1-3 delims=:" %%a in ("%ST%") do set /a h1=%%a & set /a m1=%%b & set /a s1=%%c

REM End Time Definition
for /f "tokens=1-3 delims=:" %%a in ("%TIME%") do set /a h2=%%a & set /a m2=%%b & set /a s2=%%c

REM Difference
set /a h3=%h2%-%h1% & set /a m3=%m2%-%m1% & set /a s3=%s2%-%s1%

REM Time Adjustment
if %h3% LSS 0 set /a h3=%h3%+24
if %m3% LSS 0 set /a m3=%m3%+60 & set /a h3=%h3%-1
if %s3% LSS 0 set /a s3=%s3%+60 & set /a m3=%m3%-1

echo Start    :    %ST%
echo End    :    %time%
echo.
echo Total    :    %h3%:%m3%:%s3%
echo.
pause

my code는 최대 24시간(밀리초 단위)의 실행시간을 제공합니다.로케일에 구애받지 않고 코드가 자정까지 실행되면 음의 값을 계산합니다.지연된 확장을 사용하며 cmd/bat 파일에 저장해야 합니다.

코드 앞:

SETLOCAL EnableDelayedExpansion

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set t=%%I
set /a t1 = %t:~8,1%*36000 + %t:~9,1%*3600 + %t:~10,1%*600 + %t:~11,1%*60 + %t:~12,1%*10 + %t:~13,1% && set t1=!t1!%t:~15,3%

코드 뒤에:

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set t=%%I
set /a t2 = %t:~8,1%*36000 + %t:~9,1%*3600 + %t:~10,1%*600 + %t:~11,1%*60 + %t:~12,1%*10 + %t:~13,1% && set t2=!t2!%t:~15,3%
set /a t2-=t1 && if !t2! lss 0 set /a t2+=24*3600000

실행 시간을 HH:mm:ss.000 형식으로 지정하려면 다음을 추가합니다.

set /a "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%표시할 수 있습니다.

이것은 Luke Sampson의 멋진 코멘트/편집입니다.timecmd.bat에 응답해 주세요.

어떤 이유에선지 이건 몇 초 안에만 출력해줘요나한텐 소용없는 일이야timecmd pause를 실행하면 항상 1.00초, 2.00초, 4.00초...0.00초라도!Windows 7 - Camilo Martin 2013년 9월 25일 16:00

구성에 따라 구분 기호가 다를 수 있습니다.다음 변경은 적어도 대부분의 서방 국가를 대상으로 합니다.

set options="tokens=1-4 delims=:,." (added comma)

%time%milliseconds는 ' , 를 추가한 후 시스템에서 작동합니다.

(*ipv6 ip 및 브라우저 지문과 조합하여 항상 동일한 게스트 이메일을 사용하지만 사이트에서는 anon 코멘트를 허용하지 않고 ID를 제대로 추적하지 않기 때문에 패스워드 없이 고유 식별이 가능합니다.

powershell을 사용한 또 다른 접근법:

@echo off
for /f %%t in ('powershell "(get-date).tofiletime()"') do set mst=%%t

rem some commands

powershell ((get-date).tofiletime() - %mst%)

그러면 실행 시간이 밀리초 단위로 출력됩니다.

@echo off & setlocal

set start=%time%

REM Do stuff to be timed here.
REM Alternatively, uncomment the line below to be able to
REM pass in the command to be timed when running this script.
REM cmd /c %*

set end=%time%

REM Calculate time taken in seconds, to the hundredth of a second.
REM Assumes start time and end time will be on the same day.

set options="tokens=1-4 delims=:."

for /f %options% %%a in ("%start%") do (
    set /a start_s="(100%%a %% 100)*3600 + (100%%b %% 100)*60 + (100%%c %% 100)"
    set /a start_hs=100%%d %% 100
)

for /f %options% %%a in ("%end%") do (
    set /a end_s="(100%%a %% 100)*3600 + (100%%b %% 100)*60 + (100%%c %% 100)"
    set /a end_hs=100%%d %% 100
)

set /a s=%end_s%-%start_s%
set /a hs=%end_hs%-%start_hs%

if %hs% lss 0 (
    set /a s=%s%-1
    set /a hs=100%hs%
)
if 1%hs% lss 100 set hs=0%hs%

echo.
echo  Time taken: %s%.%hs% secs
echo.

다음 스크립트에서는 "cmd.exe"만 사용하며 파이프라인이 생성된 시점부터 스크립트 앞의 프로세스가 종료될 때까지의 시간(밀리초)을 출력합니다.즉, 명령어를 입력하고 를 스크립트에 파이프로 연결합니다.예: "timeout 3 | runtime.cmd"는 "2990"과 같습니다.런타임 출력과 stdin 출력이 모두 필요한 경우 파이프 앞에 stdin을 수정합니다(예: "dir / s 1 > temp).txt | runtime.txt" 명령어의 출력을 "txt.txt"로 덤프하여 콘솔에 런타임 출력을 출력합니다.

:: --- runtime.cmd ----
@echo off
setlocal enabledelayedexpansion

:: find target for recursive calls
if not "%1"=="" (
    shift /1
    goto :%1
    exit /b
)

:: set pipeline initialization time
set t1=%time%

:: wait for stdin
more > nul

:: set time at which stdin was ready
set t2=!time!

::parse t1
set t1=!t1::= !
set t1=!t1:.= !
set t1=!t1: 0= !

:: parse t2
set t2=!t2::= !
set t2=!t2:.= !
set t2=!t2: 0= !

:: calc difference
pushd %~dp0
for /f %%i in ('%0 calc !t1!') do for /f %%j in ('%0 calc !t2!') do (
    set /a t=%%j-%%i
    echo !t!
)
popd
exit /b
goto :eof

:calc
set /a t=(%1*(3600*1000))+(%2*(60*1000))+(%3*1000)+(%4)
echo !t!
goto :eof

endlocal

driblio의 답변은 조금 짧게 할 수 있습니다(많이 읽을 수는 없지만).

@echo off

:: Calculate the start timestamp
set _time=%time%
set /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2%
set /a _started=_hours*60*60*100+_min*60*100+_sec*100+_cs


:: yourCommandHere


:: Calculate the difference in cSeconds
set _time=%time%
set /a _hours=100%_time:~0,2%%%100,_min=100%_time:~3,2%%%100,_sec=100%_time:~6,2%%%100,_cs=%_time:~9,2%
set /a _duration=_hours*60*60*100+_min*60*100+_sec*100+_cs-_started

:: Populate variables for rendering (100+ needed for padding)
set /a _hours=_duration/60/60/100,_min=100+_duration/60/100%%60,_sec=100+(_duration/100%%60%%60),_cs=100+_duration%%100

echo Done at: %_time% took : %_hours%:%_min:~-2%:%_sec:~-2%.%_cs:~-2%

::prints something like:
::Done at: 12:37:53,70 took: 0:02:03.55

Luke Sampson의 지적에 따르면 이 버전은 8진수 안전하지만 작업은 24시간 내에 완료되어야 합니다.

Perl이 사용 가능한hyes 솔루션을 설치하도록 하고 다음을 수행합니다.

C:\BATCH>time.pl "echo Fine result"
0.01063
Fine result

STDERR은 측정된 초보다 앞에 있습니다.

#!/usr/bin/perl -w

use Time::HiRes qw();
my $T0 = [ Time::HiRes::gettimeofday ];

my $stdout = `@ARGV`;

my $time_elapsed = Time::HiRes::tv_interval( $T0 );

print $time_elapsed, "\n";
print $stdout;

cmd 및 하나의 env. 변수에 대해 순수 PHP를 사용하는 솔루션:

@echo off
setlocal enableextensions

REM set start time env var
FOR /F "tokens=* USEBACKQ" %%F IN (`php -r "echo microtime(true);"`) DO ( SET start_time=%%F )

## PUT_HERE_THE_COMMAND_TO_RUN ##

REM echo elapsed time
php -r "echo 'elapsed: ' . (round(microtime(true) - trim(getenv('start_time')), 2)) . ' seconds' . mb_convert_encoding('&#13;&#10;', 'UTF-8', 'HTML-ENTITIES');"
  • sygwin 또는 non-wireless 유틸리티가 필요하지 않습니다.PHP가 로컬에서 사용 가능한 경우 사용 가능

  • 정밀도 및 출력 포맷을 쉽게 조정할 수 있습니다.

  • 동일한 아이디어를 PowerShell에 이식할 수 있습니다.

CMake 가 인스톨 되어 있는 경우는, 다음의 커맨드를 실행할 수 있습니다.

cmake -E time <the_command_to_measure_run_time>

서브를 사용하여 100분의 1초 단위로 시간 반환

::tiemeit.cmd
@echo off
Setlocal EnableDelayedExpansion

call :clock 

::call your_command  or more > null to pipe this batch after your_command

call :clock

echo %timed%
pause
goto:eof

:clock
if not defined timed set timed=0
for /F "tokens=1-4 delims=:.," %%a in ("%time%") do ( 
set /A timed = "(((1%%a - 100) * 60 + (1%%b - 100)) * 60 + (1%%c - 100))  * 100 + (1%%d - 100)- %timed%"
)
goto:eof

언급URL : https://stackoverflow.com/questions/673523/how-do-i-measure-execution-time-of-a-command-on-the-windows-command-line

반응형