mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-22 14:25:21 +00:00
gb_internal a lot
This commit is contained in:
@@ -13,13 +13,13 @@ struct Timings {
|
||||
|
||||
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
u64 win32_time_stamp_time_now(void) {
|
||||
gb_internal u64 win32_time_stamp_time_now(void) {
|
||||
LARGE_INTEGER counter;
|
||||
QueryPerformanceCounter(&counter);
|
||||
return counter.QuadPart;
|
||||
}
|
||||
|
||||
u64 win32_time_stamp__freq(void) {
|
||||
gb_internal u64 win32_time_stamp__freq(void) {
|
||||
gb_local_persist LARGE_INTEGER win32_perf_count_freq = {0};
|
||||
if (!win32_perf_count_freq.QuadPart) {
|
||||
QueryPerformanceFrequency(&win32_perf_count_freq);
|
||||
@@ -33,11 +33,11 @@ u64 win32_time_stamp__freq(void) {
|
||||
|
||||
#include <mach/mach_time.h>
|
||||
|
||||
u64 osx_time_stamp_time_now(void) {
|
||||
gb_internal u64 osx_time_stamp_time_now(void) {
|
||||
return mach_absolute_time();
|
||||
}
|
||||
|
||||
u64 osx_time_stamp__freq(void) {
|
||||
gb_internal u64 osx_time_stamp__freq(void) {
|
||||
mach_timebase_info_data_t data;
|
||||
data.numer = 0;
|
||||
data.denom = 0;
|
||||
@@ -55,14 +55,14 @@ u64 osx_time_stamp__freq(void) {
|
||||
|
||||
#include <time.h>
|
||||
|
||||
u64 unix_time_stamp_time_now(void) {
|
||||
gb_internal u64 unix_time_stamp_time_now(void) {
|
||||
struct timespec ts;
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
|
||||
return (ts.tv_sec * 1000000000) + ts.tv_nsec;
|
||||
}
|
||||
|
||||
u64 unix_time_stamp__freq(void) {
|
||||
gb_internal u64 unix_time_stamp__freq(void) {
|
||||
gb_local_persist u64 freq = 0;
|
||||
|
||||
if (freq == 0) {
|
||||
@@ -80,7 +80,7 @@ u64 unix_time_stamp__freq(void) {
|
||||
#error Implement system
|
||||
#endif
|
||||
|
||||
u64 time_stamp_time_now(void) {
|
||||
gb_internal u64 time_stamp_time_now(void) {
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
return win32_time_stamp_time_now();
|
||||
#elif defined(GB_SYSTEM_OSX)
|
||||
@@ -92,7 +92,7 @@ u64 time_stamp_time_now(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
u64 time_stamp__freq(void) {
|
||||
gb_internal u64 time_stamp__freq(void) {
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
return win32_time_stamp__freq();
|
||||
#elif defined(GB_SYSTEM_OSX)
|
||||
@@ -104,44 +104,44 @@ u64 time_stamp__freq(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
TimeStamp make_time_stamp(String const &label) {
|
||||
gb_internal TimeStamp make_time_stamp(String const &label) {
|
||||
TimeStamp ts = {0};
|
||||
ts.start = time_stamp_time_now();
|
||||
ts.label = label;
|
||||
return ts;
|
||||
}
|
||||
|
||||
void timings_init(Timings *t, String const &label, isize buffer_size) {
|
||||
gb_internal void timings_init(Timings *t, String const &label, isize buffer_size) {
|
||||
array_init(&t->sections, heap_allocator(), 0, buffer_size);
|
||||
t->total = make_time_stamp(label);
|
||||
t->freq = time_stamp__freq();
|
||||
}
|
||||
|
||||
void timings_destroy(Timings *t) {
|
||||
gb_internal void timings_destroy(Timings *t) {
|
||||
array_free(&t->sections);
|
||||
}
|
||||
|
||||
void timings__stop_current_section(Timings *t) {
|
||||
gb_internal void timings__stop_current_section(Timings *t) {
|
||||
if (t->sections.count > 0) {
|
||||
t->sections[t->sections.count-1].finish = time_stamp_time_now();
|
||||
}
|
||||
}
|
||||
|
||||
void timings_start_section(Timings *t, String const &label) {
|
||||
gb_internal void timings_start_section(Timings *t, String const &label) {
|
||||
timings__stop_current_section(t);
|
||||
array_add(&t->sections, make_time_stamp(label));
|
||||
}
|
||||
|
||||
f64 time_stamp_as_s(TimeStamp const &ts, u64 freq) {
|
||||
gb_internal f64 time_stamp_as_s(TimeStamp const &ts, u64 freq) {
|
||||
GB_ASSERT_MSG(ts.finish >= ts.start, "time_stamp_as_ms - %.*s", LIT(ts.label));
|
||||
return cast(f64)(ts.finish - ts.start) / cast(f64)freq;
|
||||
}
|
||||
|
||||
f64 time_stamp_as_ms(TimeStamp const &ts, u64 freq) {
|
||||
gb_internal f64 time_stamp_as_ms(TimeStamp const &ts, u64 freq) {
|
||||
return 1000.0*time_stamp_as_s(ts, freq);
|
||||
}
|
||||
|
||||
f64 time_stamp_as_us(TimeStamp const &ts, u64 freq) {
|
||||
gb_internal f64 time_stamp_as_us(TimeStamp const &ts, u64 freq) {
|
||||
return 1000000.0*time_stamp_as_s(ts, freq);
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ enum TimingUnit {
|
||||
|
||||
char const *timing_unit_strings[TimingUnit_COUNT] = {"s", "ms", "us"};
|
||||
|
||||
f64 time_stamp(TimeStamp const &ts, u64 freq, TimingUnit unit) {
|
||||
gb_internal f64 time_stamp(TimeStamp const &ts, u64 freq, TimingUnit unit) {
|
||||
switch (unit) {
|
||||
case TimingUnit_Millisecond: return time_stamp_as_ms(ts, freq);
|
||||
case TimingUnit_Microsecond: return time_stamp_as_us(ts, freq);
|
||||
@@ -169,7 +169,7 @@ f64 time_stamp(TimeStamp const &ts, u64 freq, TimingUnit unit) {
|
||||
}
|
||||
}
|
||||
|
||||
void timings_print_all(Timings *t, TimingUnit unit = TimingUnit_Millisecond, bool timings_are_finalized = false) {
|
||||
gb_internal void timings_print_all(Timings *t, TimingUnit unit = TimingUnit_Millisecond, bool timings_are_finalized = false) {
|
||||
isize const SPACES_LEN = 256;
|
||||
char SPACES[SPACES_LEN+1] = {0};
|
||||
gb_memset(SPACES, ' ', SPACES_LEN);
|
||||
|
||||
Reference in New Issue
Block a user