¿Cómo puedo medir el tiempo de CPU y el tiempo de reloj de pared en Linux / Windows?

Quiero decir: ¿cómo puedo medir el tiempo que mi CPU dedica a la ejecución de la función y el tiempo de reloj de pared que se necesita para ejecutar mi función? (Estoy interesado en Linux / Windows y tanto x86 como x86_64). Vea lo que quiero hacer (estoy usando C ++ aquí pero preferiría la solución C):

int startcputime, endcputime, wcts, wcte;

startcputime = cputime();
function(args);
endcputime = cputime();

std::cout << "it took " << endcputime - startcputime << " s of CPU to execute this\n";

wcts = wallclocktime();
function(args);
wcte = wallclocktime();

std::cout << "it took " << wcte - wcts << " s of real time to execute this\n";

Otra pregunta importante: ¿este tipo de arquitectura de medición de tiempo es independiente o no?

Respuestas a la pregunta(4)

Su respuesta a la pregunta