Я пытаюсь измерить время процессора внешнего программного обеспечения, которое я вызываю из своего кода на C++, с помощью системы (в Linux). Интересно, можно ли сравнить «пользовательский интерфейс и системное время» с «пользовательским и системным временем, заданным командой времени».Измерять время на C++ для команды системного вызова в Linux
Пример, будет время, возвращаемые этими двумя кусками кода будет (примерно) то же самое, то есть, я бы делать справедливое сравнение ?:
// КОД 1 (GETUSAGE)
long int timeUsage1,timeUsage2 = 0;
struct rusage usage;
getrusage(RUSAGE_SELF, &usage);
timeUsage1 = usage.ru_utime.tv_sec+usage.ru_stime.tv_sec;
//C++ code
getrusage(RUSAGE_SELF, &usage);
timeUsage2 = ((usage.ru_utime.tv_sec+usage.ru_stime.tv_sec)-timeUsage1);
// CODE 2 (TIME COMMAND LINUX от моего C++ код)
system(time external) //where external is equivalent to C++ code above
Спасибо, Ana
PS: С помощью команды время от CODE 2 я получаю что-то вроде этого:
4.89user 2.13system 0: 05.11elapsed 137% CPU (0avgtext + 0avgdata 23968maxresident) к 0inputs + 86784outputs (0major + 2386minor) PageFaults 0swaps
Должен ли я беспокоиться о 137% CPU вообще?
Использование 137% cpu указывает на то, что используется более одного процессора. Само по себе не о чем беспокоиться - некоторые могли бы даже сказать «хорошо». Это может быть связано с тем, что сама ОС (система) принимает 2.13s + пользовательский режим занимает 4.89s (около 7.02s без клакера в 2AM), и все это работает в 5.11s, поэтому ясно, что использование ЦП выше, чем «стена время". –
Спасибо Маты, это имеет смысл. Я предполагаю, что 7.02s эквивалентны общему времени, если был использован только один процессор? – Ana