Значение real, user и sys в выводе команды времени Linux
$ time ./Test
real 0m2.906s
user 0m2.887s
sys 0m0.017s
Вот код программы:
#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;
}
1 ответ
Если вы посмотрите на справочную страницу (man time
), Говорится:
Команда time запускает указанную программную команду с заданными аргументами. Когда команда завершается, время записывает сообщение в стандартный вывод, предоставляя статистику по времени выполнения этой программы. Эти статистические данные состоят из (i) истекшего реального времени между вызовом и завершением, (ii) пользовательского времени ЦП (сумма значений tms_utime и tms_cutime в структуре tms, возвращаемых times(2)), и (iii) системное процессорное время (сумма значений tms_stime и tms_cstime в структуре tms, возвращаемая times(2)).
В основном, хотя, user
время, как долго ваша программа работала на процессоре, и sys
время было тем, как долго ваша программа ожидала выполнения операционной системы для нее. Если вы заинтересованы в бенчмаркинге, user + sys
хорошее время для использования. real
может зависеть от других запущенных процессов и является более противоречивым.