Como posso medir o tempo de CPU e o tempo de clock de parede no Linux / Windows?
Quero dizer: como eu posso medir o tempo gasto pelo meu processador na execução da função e o tempo de relógio de parede necessário para executar minha função? (Estou interessado em Linux / Windows e ambos x86 e x86_64). Veja o que eu quero fazer (estou usando C ++ aqui, mas eu preferiria a solução 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";
Outra questão importante: esse tipo de medição de tempo é arquitetura independente ou não?