Gibt es eine integrierte Möglichkeit, die Ausführungszeit eines Befehls in der Windows-Befehlszeile zu messen?
Funktioniert auch gut auf Windows 8.1. Ich habe meinen in timer.exe umbenannt, weil ich mir den Namen ptime nie merken kann.
Gibt es eine integrierte Möglichkeit, die Ausführungszeit eines Befehls in der Windows-Befehlszeile zu messen?
Ich verwende Windows XP und aus irgendeinem Grund funktioniert timeit.exe bei mir nicht. Ich habe eine Alternative gefunden - PTIME. Das funktioniert sehr gut.
http://www.pc-tools.net/win32/ptime/
Beispiel -
C:\> ptime
ptime 1.0 für Win32, Freeware - http://www.pc-tools.net/
Copyright(C) 2002, Jem Berkes
Syntax: ptime command [arguments ...]
ptime wird das angegebene Kommando ausführen und die Ausführungszeit
(Laufzeit) in Sekunden messen, genau auf 5 Millisekunden oder besser. Es ist ein
automatischer Prozess Timer oder Programm Timer.
C:\> ptime cd
ptime 1.0 für Win32, Freeware - http://www.pc-tools.net/
Copyright(C) 2002, Jem Berkes
=== cd ===
C:\
Ausführungszeit: 0.015 s
Solange es nicht länger als 24 Stunden dauert...
@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 Dauer: %timetaken% Sek.
Je nach der Version von Windows, die Sie verwenden, wird einfach das Ausführen von bash
Sie in den Bash-Modus versetzen. Dies ermöglicht Ihnen die Verwendung einer Vielzahl von Befehlen, die in PowerShell direkt nicht verfügbar sind (wie der time
Befehl). Das Timing Ihres Befehls ist jetzt so einfach wie:
# Die Klausel (ohne die spitzen Klammern) kennzeichnet den Befehl, den Sie ausführen möchten.
$ time
Hinweis: Sie können ganz einfach aus dem Bash-Modus aussteigen und wieder in Ihre Hauptshell zurückkehren, indem Sie
exit
im Bash-Modus ausführen.
Dies hat bei mir perfekt funktioniert (Windows 10), nachdem ich andere Methoden ausprobiert habe (wie Measure-Command
), die manchmal unerwünschte Statistiken produzieren. Hoffentlich funktioniert das auch bei Ihnen.
Es gibt auch TimeMem (März 2012):
Dies ist ein Windows-Dienstprogramm, das ein Programm ausführt und dessen Ausführungszeit, Speicherverbrauch und E/A-Statistiken anzeigt. Es ähnelt funktional dem Unix-Dienstprogramm Zeit.
Hier ist ein
Beispiel für die Verwendung:
timeout 1 | TimeIt.cmd
Ausführung dauerte ~969 Millisekunden.
Kopieren und einfügen in einen Editor wie z.B. Notepad++ und speichern als TimeIt.cmd:
:: --- TimeIt.cmd ----
@echo off
setlocal enabledelayedexpansion
call :ShowHelp
:: Setze Startzeit des Pipelines
set t1=%time%
:: Warte auf stdin
more
:: Setze Zeitpunkt, an dem stdin bereit war
set t2=!time!
:: Berechne Differenz
Call :GetMSeconds Tms1 t1
Call :GetMSeconds Tms2 t2
set /a deltaMSecs=%Tms2%-%Tms1%
echo Ausführung dauerte ~ %deltaMSecs% Millisekunden.
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
:: Maske für Zeit wie " 0:23:29,12"
set %1=!%2: 0=0!
:: Ersetze Zeit-Trennzeichen mit " "
set %1=!%1::= !
set %1=!%1:.= !
set %1=!%1:,= !
:: Lösche führende Null - damit sie später nicht als oktal interpretiert wird
set %1=!%1: 0= !
goto :eof
:ShowHelp
echo %~n0 V1.0 [Dez 2015]
echo.
echo Verwendung: ^ ^| %~nx0
echo.
echo Warte darauf, dass die Pipeline bereit ist... :)
echo (Drücken Sie Strg+Z ^ zum Abbrechen)
goto :eof
^ - Basierend auf 'Daniel Sparks' Version
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.