У меня была эта проблема некоторое время назад.Я закончил с использованием getrusage: Вы можете получить подробную помощь по адресу: http://www.opengroup.org/onlinepubs/009695399/functions/getrusage.html
getrusage заполняет структуру rusage.
Измерение времени ожидания с помощью getrusage
Вы можете вызвать getrusage в начале вашего кода, а затем снова вызвать его в конце или в какой-то подходящей точкево время исполнения.Затем у вас есть initial_rusage и final_rusage.Время пользователя, потраченное вашим процессом, указывается с помощью rusage-> ru_utime.tv_sec, а системное время, потраченное процессом, указывается с помощью rusage-> ru_stime.tv_sec.
Таким образом, общее пользовательское время, потраченное процессом, будет: user_time = final_rusage.ru_utime.tv_sec - initial_rusage.ru_utime.tv_sec
Общее системное время, потраченное процессом, будет:system_time = final_rusage.ru_stime.tv_sec - initial_rusage.ru_stime.tv_sec
Если total_time - это время, прошедшее между двумя вызовами getrusage, тогда время ожидания будет wait_time = total_time - (user_time + system_time)
Надеюсь, это поможет