time (Unix)
time (dalla lingua inglese time, tempo) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che avvia un programma e, quando esso termina, visualizza sullo standard error il tempo impiegato per eseguirlo, diviso in tre valori:
- il tempo di esecuzione reale (il tempo trascorso dall'avvio al termine del programma);
- il tempo di CPU utente (il tempo impiegato dalla CPU per eseguire le istruzioni non di sistema del programma — vedi anche user mode);
- il tempo di CPU di sistema (il tempo impiegato dalla CPU per eseguire le istruzioni di sistema del programma — vedi anche kernel mode).
La somma del tempo di CPU di sistema e del tempo di CPU utente è tipicamente inferiore al tempo totale di esecuzione, in quanto ai primi due va sommato anche il tempo in cui il programma rimane inattivo (perché ad esempio la CPU è impegnata ad eseguire altri programmi, o è in attesa che una periferica si renda disponibile).
time è anche il nome di una chiamata di sistema definita dallo standard POSIX[2] che ritorna la data e ora correnti come numero di secondi trascorsi rispetto alla mezzanotte (UTC) del 1º gennaio 1970 (data detta epoca), secondo la consueta rappresentazione del tempo nei sistemi Unix.
Notare che il comando time non usa l'omonima chiamata di sistema, ma usa invece la chiamata di sistema times.
Il comando time
[modifica | modifica wikitesto]La sintassi generale del comando time è la seguente:
time [opzioni] [--] comando [arg1 [arg2 …] ]
I parametri comando e arg specificano il comando di cui misurare il tempo di esecuzione, insieme ai suoi eventuali parametri.
Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
L'unica opzione di rilievo è -p che indica di mostrare i valori in un formato standard.
Esempi
[modifica | modifica wikitesto]Esegue il comando sort -n file.txt > file_ordinato.txt mostrando il tempo impiegato:
$ time sort file.txt > file_ordinato.txt
real 0m0.507s user 0m0.492s sys 0m0.008s
Come sopra, ma visualizza i tempi usando un formato standard:
$ time -p sort file.txt > file_ordinato.txt
real 0.51 user 0.49 sys 0.01
La chiamata di sistema time
[modifica | modifica wikitesto]La chiamata di sistema time è dichiarata nello header file time.h:
#include <time.h>
time_t time(time_t * t);
Il tipo time_t è un tipo che rappresenta una quantità di secondi.
Il parametro t è un puntatore ad una variabile di tipo time_t che viene avvalorata con il risultato (solo se t è diverso da NULL
).
Valore di ritorno
[modifica | modifica wikitesto]In caso di successo viene restituito il numero di secondi trascorsi dall'epoca, altrimenti viene ritornato il valore -1 e la variabile errno indica l'errore specifico.
Note
[modifica | modifica wikitesto]- ^ (EN) time, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 12-01-2009.
- ^ (EN) time (functions), in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 12-01-2009.