2013-09-12 2 views
0

Я пытаюсь измерить время процессора внешнего программного обеспечения, которое я вызываю из своего кода на 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 вообще?

+1

Использование 137% cpu указывает на то, что используется более одного процессора. Само по себе не о чем беспокоиться - некоторые могли бы даже сказать «хорошо». Это может быть связано с тем, что сама ОС (система) принимает 2.13s + пользовательский режим занимает 4.89s (около 7.02s без клакера в 2AM), и все это работает в 5.11s, поэтому ясно, что использование ЦП выше, чем «стена время". –

+0

Спасибо Маты, это имеет смысл. Я предполагаю, что 7.02s эквивалентны общему времени, если был использован только один процессор? – Ana

ответ

0

Таким образом, 137% основано на том факте, что 7.02s (всего «Пользователь + система») составляет 137% от фактического времени, затраченного на выполнение кода, 5.11s. Итак, если бы у вас был только один процессор (ядро), общее время было бы не менее 7,02.

Поскольку мы не видим ваш фактический код, трудно сказать, вызвано ли это тем, что ваш код многопоточен, или если время тратится на ядро, которое работает в нескольких потоках «за кулисами», поэтому говорить.

Смежные вопросы