Trova il tempo di esecuzione totale di un comando o programma in Windows

A volte potresti voler trovare il tempo di esecuzione totale di un comando o programma che esegui. Per ottimizzare uno script o un programma, è essenziale sapere quanto tempo impiega per completare l'esecuzione. Questo ti aiuta a confrontare il tempo di esecuzione totale del Programma A rispetto al Programma B e ottimizzare il tuo codice, specialmente se sei uno sviluppatore software professionista, un analista o un tester software.

La misurazione del tempo di esecuzione totale di uno script o processo è uno degli aspetti più critici dell'ottimizzazione delle prestazioni. In questo articolo vengono illustrati vari metodi per trovare il tempo di esecuzione totale di un programma, script o comando in Windows.

Trova il tempo di esecuzione totale di un programma o comando

Utilizzando PowerShell

PowerShell include il cmdlet Measure-Command integrato che ti aiuta a misurare il tempo necessario per eseguire blocchi di script, cmdlet o persino programmi esterni. Ecco un esempio della riga di comando di PowerShell che misura i tempi di completamento della riga di comando di ping google.com :

 Out-Host di misura-comando 

Dopo l'output del comando ping, vedrai le seguenti statistiche in fondo.

 Giorni: 0 Ore: 0 Minuti: 0 Secondi: 3 Millisecondi: 66 Tick: 30660017 TotalDays: 3.5486130787037E-05 TotalHours: 0.000851667138888889 TotalMinutes: 0.0511000283333333 TotalSeconds: 3.0660017 TotalMilliseconds: 3066.0017 

Maggiori informazioni su Measure-Object su Microsoft Docs.

Il completamento del comando ha richiesto 3, 06 secondi. L'argomento Out-Host, se omesso, PowerShell nasconde l'output (del comando Ping ) nella console: vedrai solo le statistiche di esecuzione.

$config[ads_text6] not found

Se si dispone di una lunga riga di comando o è necessario eseguire più comandi, è possibile inserirli in un file batch di Windows e quindi eseguirlo utilizzando PowerShell. Ecco un esempio:

 Processo di avvio misura-comando "d: \ batch \ backup.bat" 
CORRELATO: Trova la quantità di parole, caratteri e righe in un file di testo usando PowerShell

Utilizzando VBScript

Ecco un semplice VBScript che calcola il tempo di esecuzione totale di una riga di comando, un programma o un file batch.

 Imposta 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 "L'attività è stata completata in" & Round (Timer - dtmStartTime, 2) e "secondi". 
  1. Copia il codice sopra in Blocco note
  2. Salvare il file come exec_timer.vbs .
  3. Nella seconda riga che inizia con sCmd, modificare il programma che si desidera eseguire, ovvero sostituire "D:\Batch Files\Backup.bat" nell'esempio sopra con l'applicazione o il batch che si desidera eseguire.
  4. Salvare il file e chiudere Blocco note.
  5. Fare doppio clic sul file VBScript per eseguirlo.

VBScript avvia il file batch, il comando o il programma. Al termine dell'esecuzione, viene visualizzato il tempo di esecuzione totale (in secondi).


Utilizzo di TimeIt.exe dagli strumenti del Resource Kit

TimeIt.exe fa parte dello strumento Resource Kit di Windows Server 2003 che mostra i tempi di esecuzione del programma o del comando. Questo programma funziona anche su Windows 10.

  1. Dopo aver scaricato RK Tools, aprire il file rktools.exe utilizzando 7-Zip.
  2. Quindi, apri rktools.msi

  3. Trova TimeIt.exe ed estrai in una cartella.

Per eseguire un comando o un file batch e misurare il suo tempo di esecuzione totale, ecco alcuni esempi:

 timeit.exe ping google.com 
 timeit.exe C: \ File batch \ Misura comando run time \ backup.bat 

Time Ha mostrato il tempo di uscita del processo e il tempo trascorso, tra gli altri dettagli. Quando ho controllato, il valore dei byte scritti non corrispondeva alla dimensione del file di output. Ma i byte letti / scritti non sono oggetto di discussione in questo articolo.

Maggiori informazioni

Quando ho scritto l'articolo sull'estrazione dell'audio da un file video utilizzando FFmpeg.exe, ho pensato di misurare il tempo di esecuzione del comando. Ho usato lo script sopra per misurare il tempo impiegato per estrarre l'audio MP3 da un filmato usando lo strumento da riga di comando FFmpeg.exe.

Il primo batch includeva questa riga di comando:

 ffmpeg -i "C: \ Movies \ Movie.mp4" -ss 01:20:00 -t 00:00:20 -codec: un libmp3lame -ab 128000 "D: \ output-1.mp3" 

Il secondo batch includeva questa riga di comando:

 ffmpeg -ss 01:20:00 -i "C: \ Movies \ Movie.mp4" -t 00:00:20 -codec: a libmp3lame -ab 128000 "D: \ output-2.mp3" 

Come puoi vedere, il numero di argomenti della riga di comando e i rispettivi valori sono esattamente gli stessi. L'unica differenza è che il -ss (punto di partenza) è posto prima del parametro -i (input file), nel secondo file batch. Il metodo si chiama Input cercando secondo la documentazione FFmpeg.exe. Il primo metodo è chiamato -ss dell'output, in cui il parametro -i (file di input) appare prima del parametro -ss .

  • La documentazione di FFmpeg afferma che il metodo di ricerca dell'input è molto più veloce della ricerca dell'output, perché quando si utilizza il metodo precedente, FFmpeg.exe salta (cerca) direttamente al punto di inizio menzionato nel file di input e inizia la decodifica da quel punto in poi.
  • Considerando che, il metodo di ricerca dell'output apre prima il file, inizia la decodifica dalle 00:00:00 e quindi scarta i dati fino a raggiungere il punto di inizio 01:20:00 . Pertanto, le risorse di sistema (CPU, memoria e I / O del disco) vengono sprecate e il tempo di esecuzione aumenta quando si utilizza il metodo di ricerca dell'output.
CORRELATO: Converti MP4 o qualsiasi video in MP3 (Estrai audio da file video)

La documentazione di FFmpeg.exe è corretta. Quando ho testato, la ricerca dell'ingresso ha funzionato molto più velocemente del metodo di ricerca dell'uscita.

$config[ads_text6] not found
  • Il completamento del primo comando (ricerca dell'output) ha richiesto 20, 48 secondi.
  • Il completamento del secondo comando (ricerca input) ha richiesto 16, 62 secondi.

Se conosci altri metodi per misurare il tempo di esecuzione di un processo, uno script o un comando, sappi.

Articoli Correlati