По сути, все, что вам нужно, это таймер высокого разрешения. Прошедшее время - это, конечно, только разница во времени, и ускорение рассчитывается путем деления времени для каждой задачи. Я включил код для таймера высокого разрешения, который должен работать как минимум на windows и unix.
#ifdef WIN32
#include <windows.h>
double get_time()
{
LARGE_INTEGER t, f;
QueryPerformanceCounter(&t);
QueryPerformanceFrequency(&f);
return (double)t.QuadPart/(double)f.QuadPart;
}
#else
#include <sys/time.h>
#include <sys/resource.h>
double get_time()
{
struct timeval t;
struct timezone tzp;
gettimeofday(&t, &tzp);
return t.tv_sec + t.tv_usec*1e-6;
}
#endif