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

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

Oto kod programu:Znaczenie rzeczywistych, użytkownika i sys w wyjściu Linux polecenia czasu

#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

[Tutaj] [1] daje bardzo dobre wytłumaczenie. [1]: http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 – kzhong

Odpowiedz

29

Jeśli spojrzeć na manpage (man time), stwierdza:

Polecenie time uruchamia określone polecenie programu z podanymi argumentami. Po zakończeniu polecenia, czas zapisuje komunikat na standardowe wyjście, podając statystyki czasowe dotyczące uruchomienia tego programu. Statystyki te składają się z (i) upływu czasu rzeczywistego między wywołaniem i zakończeniem, (ii) czasu procesora użytkownika (suma wartości tms_utime i tms_cutime w struct tms zwróconych przez times (2)) oraz (iii) czas procesora systemowego (suma wartości tms_stime i tms_cstime w struct tms zwróconych przez times (2)).

Zasadniczo jednak czas user jak długo program został uruchomiony na CPU, a czas sys była jak długo program czekał na system operacyjny do wykonywania zadań dla niego. Jeśli interesuje Cię benchmarking, to jest dobry czas na wykorzystanie. real może mieć wpływ na inne działające procesy i jest bardziej niespójny.

Powiązane problemy