Add time_in_seconds function

This commit is contained in:
Abdelrahman Said 2023-09-09 21:25:57 +01:00
parent 9ddb991b94
commit 22466ea56f
2 changed files with 9 additions and 2 deletions

View File

@ -61,6 +61,8 @@ u64 read_cpu_timer(void);
// CPU frequency in hz/sec // CPU frequency in hz/sec
u64 get_cpu_freq(u64 milliseconds); u64 get_cpu_freq(u64 milliseconds);
f64 time_in_seconds(u64 cpu_time, u64 cpu_freq);
void profile_start(u64 count); void profile_start(u64 count);
void profile_end(); void profile_end();

View File

@ -38,12 +38,13 @@ u64 read_cpu_timer(void) { return __rdtsc(); }
u64 get_cpu_freq(u64 milliseconds) { u64 get_cpu_freq(u64 milliseconds) {
u64 os_freq = get_os_frequency(); u64 os_freq = get_os_frequency();
u64 os_start = get_os_time();
u64 cpu_start = read_cpu_timer();
u64 os_end = 0; u64 os_end = 0;
u64 os_elapsed = 0; u64 os_elapsed = 0;
u64 os_wait_time = os_freq * milliseconds / 1000; u64 os_wait_time = os_freq * milliseconds / 1000;
u64 os_start = get_os_time();
u64 cpu_start = read_cpu_timer();
while (os_elapsed < os_wait_time) { while (os_elapsed < os_wait_time) {
os_end = get_os_time(); os_end = get_os_time();
os_elapsed = os_end - os_start; os_elapsed = os_end - os_start;
@ -61,6 +62,10 @@ u64 get_cpu_freq(u64 milliseconds) {
return cpu_freq; return cpu_freq;
} }
f64 time_in_seconds(u64 cpu_time, u64 cpu_freq) {
return (f64)cpu_time / cpu_freq;
}
void profile_start(u64 count) { void profile_start(u64 count) {
profiler.cpu_freq = get_cpu_freq(1000); profiler.cpu_freq = get_cpu_freq(1000);
profiler.start = read_cpu_timer(); profiler.start = read_cpu_timer();