[-] last trace of the high res clock
This commit is contained in:
parent
5ef6e0cd23
commit
e60c891eac
@ -9,70 +9,62 @@
|
||||
#include "AuClock.hpp"
|
||||
#include "Time.hpp"
|
||||
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
#if defined(AURORA_IS_POSIX_DERIVED)
|
||||
|
||||
// TODO (Reece): ....
|
||||
#include <sys/resource.h>
|
||||
|
||||
// benchmarking:
|
||||
// https://github.com/microsoft/STL/issues/2085
|
||||
static AuUInt64 _GetSteadyTimeNS()
|
||||
{
|
||||
static const long long gFreq = _Query_perf_frequency();
|
||||
const long long uCounter = _Query_perf_counter();
|
||||
#elif defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
|
||||
if (gFreq == 10000000)
|
||||
{
|
||||
return uCounter * 100;
|
||||
}
|
||||
else if (gFreq == 1000000)
|
||||
{
|
||||
return uCounter * 1000;
|
||||
}
|
||||
else if (gFreq == 100000)
|
||||
{
|
||||
return uCounter * 10000;
|
||||
}
|
||||
else if (gFreq == 100000000)
|
||||
{
|
||||
return uCounter * 10;
|
||||
}
|
||||
else if (gFreq == 1000000000)
|
||||
{
|
||||
return uCounter;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 6 branches: the default threshold for most jit and language compiler backends to decide to pick a jump table, if the values were in a close range
|
||||
// otherwise, back to a tree of paths. either way, im sure 6 if elses are faster than grug math with large numbers, modulus, division, and multiplication
|
||||
const long long uWhole = (uCounter / gFreq) * 1'000'000'000ull;
|
||||
const long long uPart = (uCounter % gFreq) * 1'000'000'000ull / gFreq;
|
||||
return uWhole + uPart;
|
||||
}
|
||||
}
|
||||
#define timegm _mkgmtime
|
||||
|
||||
// ~3.0741 seconds
|
||||
//using high_res_clock = steady_clock_fast;
|
||||
// benchmarking: https://github.com/microsoft/STL/issues/2085
|
||||
static AuUInt64 _GetSteadyTimeNS()
|
||||
{
|
||||
static const long long gFreq = _Query_perf_frequency();
|
||||
const long long uCounter = _Query_perf_counter();
|
||||
|
||||
// holy fuck, we're keeping this
|
||||
// ~2x improvement
|
||||
if (gFreq == 10000000)
|
||||
{
|
||||
return uCounter * 100;
|
||||
}
|
||||
else if (gFreq == 1000000)
|
||||
{
|
||||
return uCounter * 1000;
|
||||
}
|
||||
else if (gFreq == 100000)
|
||||
{
|
||||
return uCounter * 10000;
|
||||
}
|
||||
else if (gFreq == 100000000)
|
||||
{
|
||||
return uCounter * 10;
|
||||
}
|
||||
else if (gFreq == 1000000000)
|
||||
{
|
||||
return uCounter;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 6 branches: the default threshold for most jit and language compiler backends to decide to pick a jump table, if the values were in a close range
|
||||
// otherwise, back to a tree of paths. either way, im sure 6 if elses are faster than grug math with large numbers, modulus, division, and multiplication
|
||||
const long long uWhole = (uCounter / gFreq) * 1'000'000'000ull;
|
||||
const long long uPart = (uCounter % gFreq) * 1'000'000'000ull / gFreq;
|
||||
return uWhole + uPart;
|
||||
}
|
||||
}
|
||||
// ~3.0741 seconds
|
||||
|
||||
// ~6.07 seconds
|
||||
// using high_res_clock = std::chrono::high_resolution_clock;
|
||||
|
||||
// holy fuck, we're keeping this
|
||||
// ~2x improvement
|
||||
|
||||
#else
|
||||
|
||||
// ~6.07 seconds
|
||||
//using high_res_clock = std::chrono::high_resolution_clock;
|
||||
|
||||
using steady_clock = std::chrono::steady_clock;
|
||||
#endif
|
||||
|
||||
#if defined(AURORA_IS_POSIX_DERIVED)
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
using sys_clock = std::chrono::system_clock;
|
||||
using steady_clock = std::chrono::steady_clock;
|
||||
|
||||
#if defined(AURORA_PLATFORM_WIN32)
|
||||
#define timegm _mkgmtime
|
||||
#endif
|
||||
using sys_clock = std::chrono::system_clock; // more stds to remove
|
||||
|
||||
static sys_clock::duration gEpoch;
|
||||
static sys_clock::duration gUnixDelta;
|
||||
@ -134,12 +126,6 @@ static AuInt64 _CurrentClockNS()
|
||||
|
||||
namespace Aurora::Time
|
||||
{
|
||||
// removed from public header / deprecating
|
||||
AUKN_SYM AuUInt64 HighResClock();
|
||||
AUKN_SYM AuUInt64 HighResClockNS();
|
||||
AUKN_SYM AuUInt64 HighResClockMS();
|
||||
AUKN_SYM AuUInt64 HighResClockJiffies();
|
||||
|
||||
AUKN_SYM time_t SToCTime(AuInt64 time)
|
||||
{
|
||||
return CalculateTimeT<std::chrono::seconds>(time);
|
||||
@ -340,7 +326,7 @@ namespace Aurora::Time
|
||||
} \
|
||||
return (expr) * 100ull; \
|
||||
} \
|
||||
return HighResClockNS(); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
AUKN_SYM AuUInt64 fn ## Clock() \
|
||||
@ -396,7 +382,7 @@ namespace Aurora::Time
|
||||
{ \
|
||||
return AuMSToNS<AuUInt64>(AuSToMS<AuUInt64>(spec.tv_sec)) + (AuUInt64)spec.tv_nsec; \
|
||||
} \
|
||||
return HighResClockNS(); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
AUKN_SYM AuUInt64 fn ## Clock() \
|
||||
@ -434,7 +420,7 @@ namespace Aurora::Time
|
||||
} \
|
||||
} \
|
||||
\
|
||||
return HighResClockJiffies(); \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
#else
|
||||
@ -558,29 +544,4 @@ namespace Aurora::Time
|
||||
|
||||
return ToCivilTime(FromCivilTime(time, shift == ETimezoneShift::eUTC));
|
||||
}
|
||||
|
||||
#pragma region TO_DEPRECATE
|
||||
// [soon to be] @deprecated / was used by benchmarks to measure thread time
|
||||
|
||||
AUKN_SYM AuUInt64 HighResClock()
|
||||
{
|
||||
return SteadyClock();
|
||||
}
|
||||
|
||||
AUKN_SYM AuUInt64 HighResClockMS()
|
||||
{
|
||||
return SteadyClockMS();
|
||||
}
|
||||
|
||||
AUKN_SYM AuUInt64 HighResClockNS()
|
||||
{
|
||||
return SteadyClockNS();
|
||||
}
|
||||
|
||||
AUKN_SYM AuUInt64 HighResClockJiffies()
|
||||
{
|
||||
return SteadyClockJiffies();
|
||||
}
|
||||
|
||||
#pragma endregion TO_DEPRECATE
|
||||
}
|
Loading…
Reference in New Issue
Block a user