Zeitmessung von Programmen unter Windows 10

Nero Atreides

Lt. Commander Pro
Registriert
Jan. 2004
Beiträge
1.327
Gibt es ein Tool oder eine Möglichkeit unter Win 10 x64 Pro die Zeitdauer zu "stoppen", die ein Programm für eine bestimmte Aktion benötigt?

Ich will mit verschiedenen Einstellungen "Benchmarken", wie lange 7-ZIP braucht, um einen Ordner zu komprimieren. Um die Zeit zu ermitteln muss man im Fortschritts-Fenster die Sekunden (die laufen da mit) ansehen und kann so bis auf +/- 1 Sek. die Dauer ermitteln. Ist aber natürlich ziemlich aufwändig und auch ungenau. Die Frage bezieht sich also darauf, ob man irgendwie anders diese Zeitdauer ermitteln kann...

Am besten ohne Programmieren. Ich kann zwar leidlich R und HTML/CSS, aber nix Richtung Shell, VB, C+/# etc.
 
Ein Batchprogramm oder die Powershell wäre aber genau das richtige Mittel.
Im Installationsverzeichnis von 7zip findest Du die 7z.exe.
Wenn Du die in der Kommandozeile aufrufst, dann zeigt er Dir die Befehle an, die 7zip kennt.
Damit kannst Du Dein Archiv erstellen.
Wenn Du den Befehl in einer *.cmd-Datei abspeicherst und vor und nach Deinem Befehl z.B.
echo %time%
eintippst und anschließend den Batch ausführst, dann hast Du schon mal die Zeitstempel für Programmstart und Programmende.
Rechnen mit Zeitstempeln in einem Batch ist schon schwieriger.
Aber vielleicht reicht das ja schon.

Beispiel:

Code:
echo %time%
7z.exe a C:\TestArchiv.7z "C:\Testfolder"
echo %time%
 
Probier's mal hiermit :)

Code:
@echo off
call :aktuelleZeit
set /a startzeit=return
HIER DIE 7-ZIP-Zeile
call :aktuelleZeit
set /a endzeit=return
set /a deltazeit=%endzeit%-%startzeit%
echo vergangene Zeit: %deltazeit% ms

:aktuelleZeit
    set /a return=0
    for /f "tokens=1-3 delims=:" %%H in ("%time%") do (
        set /a return+=%%H * 60 * 60 * 1000
        set /a return+=%%I      * 60 * 1000
        for /f "tokens=1-2 delims=," %%s in ("%%J") do (
            set /a return+=%%s * 1000
            set /a return+=%%t
        )
    )
exit /b %return%
 
Ich täte die Zeit(en) ja in eine Datei lenken 😉
Wie ich aber mit dem Trick Word kontrollieren wollte oder andere rein grafische Programme ist die Frage.

Mir fiel für den selben Weg AutoIt ein. Da kann ich jeweils die Zeit festnageln und mit einigen Befehlen (sinngemäß ein Makro) das Programm so Steuern wie ich es brauche. Dass das ein bisschen Aufwand ist, keine Frage; aber es hält meine Finger als Bremselemente draußen.

CN8
 
Sehr cool, danke Leute. Ich probiere es morgen mal aus!
 
Hier ist ein verbesserter Batch DiffTime.cmd.
Im obigen Script gibt es immer Fehler, wenn eine der Zahlen 08 oder 09 ist. Diese werden als ungültige Oktalzahlen interpretiert. Daher schneide ich in diesem Fall die führende Null ab.
DiffTime.cmd
Code:
@echo off & setlocal enabledelayedexpansion
:DiffTime
    set /a CurrentTime=0
    for /f "tokens=1-3 delims=:" %%H in ("%time%") do (
        set Hour=%%H
        set Min=%%I
        if "!Hour:~0,1!" == "0"  set Hour=!Hour:~1,2!
        if "!Min:~0,1!"  == "0"  set Min=!Min:~1,2!
        set /a CurrentTime+=!Hour! * 60 * 60 * 1000
        set /a CurrentTime+=!Min!       * 60 * 1000
        for /f "tokens=1-2 delims=," %%s in ("%%J") do (
            set Sec=%%s
            set mSec=%%t
            if "!Sec:~0,1!"  == "0"  set Sec=!Sec:~1,2!
            if "!mSec:~0,1!" == "0"  set mSec=!mSec:~1,2!
            set /a CurrentTime+=!Sec!  * 1000
            set /a CurrentTime+=!mSec! * 10
        )
    )
endlocal & set CurrentTime=%CurrentTime%
set /a StartTime=EndTime
set /a EndTime=CurrentTime
set /a DiffTime=%EndTime%-%StartTime%

exit /b %CurrentTime%

und hier ist das Cmd zum Testen:
DiffTest.cmd
Code:
@echo off
call DiffTime.cmd

powershell -Executionpolicy Bypass -Command "Start-Sleep -Milliseconds 800"

call DiffTime.cmd
echo DiffTime=%DiffTime% ms

Der Aufruf der Powershell dauert allerdings selbst nochmal 800 ms, so dass die gemessene Gesamtdauer ca. 1600 ms beträgt.

Der Code kann natürlich auch im eigenen Batch eingefügt werden. Dann ist der Aufruf:
Code:
call :DiffTime
 
Zuletzt bearbeitet:
Nero Atreides schrieb:
Um die Zeit zu ermitteln muss man im Fortschritts-Fenster die Sekunden (die laufen da mit) ansehen und kann so bis auf +/- 1 Sek. die Dauer ermitteln.
Falls einem diese 1 s (+/-) doch ausreichen, kann man sich auch im Explorer die Dateieigenschaften ansehen.
7zip_Dateieigenschaften_Explorer.PNG

Die Differenz aus dem "Erstellt"- und "Geändert"-Datum ergibt die Zeit, die 7zip benötigt hat (hier: 32' 23").
Hat den Vorteil, dass man's auch noch nachträglich nachsehen kann.
 
Zurück
Oben