Существуют различные способы измерить, сколько времени занимает выполнение кода.
Если вы заинтересованы в относительном исполнении определенных функций, то profiler - единственный способ. Обратите внимание, что это ослабит влияние блокировки ввода-вывода из-за накладных расходов, которые он вызывает.
Если вам нужны основанные на часах время определенных функций, есть множество вариантов.
Лично я бы сказал, что gettimeofday достаточно.
Если вы хотите получить точный , используйте RDTSC
Если вы хотите получить действительно точный, вам нужно что-то вроде этого
t1 = rdtsc();
t2 = rdtsc();
my_code();
t3 = rdtsc();
my_code_time = (t3-t2) - (t2-t1)
Вам нужно будет повторить этот блок, чтобы учесть несоответствия в планировании потоков, а также обратить внимание на эффекты кэширования.