I work a lot on MacOS where I write code that I want to use on linux later. Unfortunately some of the normal timing functions are missing on MacOS. I don’t quite remember which. So I have some crude platform independent code for timing c++ code. I am aware it does not really count the CPU usage, but putting it around code you want to time you can still get a feeling for how much time is spent in that part of your code.
class pTimer { timeval t1, t2; public: double t; pTimer(): t(0){}; void start() {gettimeofday(&t1, NULL);}; void stop() {gettimeofday(&t2, NULL); t += (t2.tv_sec - t1.tv_sec) * 1000.0 + (t2.tv_usec - t1.tv_usec) / 1000.0;}; void reset() {t=0;}; void restart() {t=0;gettimeofday(&t1, NULL);}; };
it is used like this:
pTimer t1; t1.start(); <computationally intensive part of the code> t1.stop(); printf("took %f miliseconds", t1.t);
restart();
sets the timer to zero and starts it at the same time, using start();
again will add to the time already on the counter (useful if you want to accumulate time from different parts of your source in one timer).