2012-04-22 7 views
28
$ time ./Test 

real 0m2.906s 
user 0m2.887s 
sys  0m0.017s 

Ecco il codice del programma:Il significato di reali, utenti, e sys in output del comando time Linux

#include <iostream> 
#include <map> 

void func_a() { 
    std::map<int, int> m; 
    for (unsigned int i = 0; i < 10000; i++) { 
     m.insert(std::pair<int, int>(i, i)); 
    } 
} 

void func_b() { 
    std::map<int, int> m; 
    for (unsigned int i = 0; i < 1000000; i++) { 
     m.insert(std::pair<int, int>(i, i)); 
    } 
} 

int main() { 
    func_a(); 
    func_b(); 
    return 0; 
} 
+0

[Qui] [1] fornisce un'ottima spiegazione. [1]: http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 – kzhong

risposta

29

Se si dà un'occhiata alla manpage (man time), si afferma:

Il comando time esegue il comando di programma specificato con gli argomenti specificati. Al termine del comando, il tempo scrive un messaggio sullo standard output, fornendo statistiche sul tempo di esecuzione di questo programma. Queste statistiche consistono in (i) il tempo reale trascorso tra l'invocazione e la terminazione, (ii) il tempo CPU dell'utente (la somma dei valori tms_utime e tms_cutime in una struct tms restituita da times (2)), e (iii) the tempo CPU del sistema (la somma dei valori tms_stime e tms_cstime in una struct tms restituita da times (2)).

In sostanza, però, il tempo user per quanto tempo il programma è stato eseguito sulla CPU, e il tempo era sys quanto tempo il vostro programma è stato in attesa del sistema operativo per eseguire le operazioni per esso. Se sei interessato al benchmarking, user + sys è un buon momento da usare. real può essere influenzato da altri processi in esecuzione ed è più incoerente.

Problemi correlati