#ifndef TIMER_H #define TIMER_H #include "aliases.h" // TODO (Abdelrahman): Not fully satisfied with this solution #define PROFILER_SAMPLE(ID, TITLE, CODE) \ u64 ID##_start = read_cpu_timer(); \ CODE; \ u64 ID##_end = read_cpu_timer(); \ add_sample(TITLE, ID##_end - ID##_start); #ifdef __cplusplus extern "C" { #endif u64 get_os_frequency(); // Time in nanoseconds u64 get_os_time(void); // CPU timer using rdtsc u64 read_cpu_timer(void); // CPU frequency in hz/sec u64 get_cpu_freq(u64 milliseconds); void profile_start(); void profile_end(); void add_sample(const char *title, u64 duration); #ifdef __cplusplus } #endif #endif // !TIMER_H