#include <unistd.h>
#include <stdio.h>
#include "stopwatch.h"

typedef struct {
  long tpid;
  } Pd;

Pd pd;
Pd * current = &pd;

static int fake_getpid() {
  return current->tpid;
  }

#define time_it(_p) \
  sw.start(); \
  for (i = 0; i < iters; i++) _p(); \
  sw.stop(); \
  printf("%d " #_p "() iterations took %4.2f usec per iteration.\n", iters, \
    static_cast<double>(sw.elapsed() - overhead)/static_cast<double>(iters))

int main() {

  stopwatch sw;
  const unsigned iters = 10000;
  unsigned i;

  sw.start();
  for (i = 0; i < iters; i++) { }
  sw.stop();
  const unsigned overhead = sw.elapsed();

  time_it(getpid);
  time_it(fake_getpid);
  }


syntax highlighted by Code2HTML, v. 0.9