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?

questionAnswers(4)

yourAnswerToTheQuestion