On most POSIX systems, you can use clock.
#include <time.h>
clock_t start = clock();
do_some_work();
clock_t elapsed = clock() - start;
On x86 systems with inline assembly, you can use RDSTC.
long long __declspec(naked) tick()
{
rdtsc;
}
long long start = tick();
do_some_work();
long long elapsed = tick() - start;
Another POSIX API is clock_gettime.
#include <unistd.h>
struct timeval start, elapsed;
clock_gettime(CLOCK_MONOTONIC, &start);
do_some_work();
clock_gettime(CLOCK_MONOTONIC, &elapsed);
if (start.tv_usec > elapsed.tv_usec)
elapsed.tv_sec--;
elapsed.tv_usec -= start.tv_usec;
elapsed.tv_sec -= start.tv_sec;
</unistd.h>