Значение 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 может зависеть от других запущенных процессов и является более противоречивым.

Другие вопросы по тегам