diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp index bff9e7b4f4..c06f9b6318 100644 --- a/src/common/wall_clock.cpp +++ b/src/common/wall_clock.cpp @@ -22,11 +22,11 @@ namespace Common { WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept : invariant{invariant_} , rdtsc_frequency{rdtsc_frequency_} - , ns_rdtsc_factor{GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)} - , us_rdtsc_factor{GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)} - , ms_rdtsc_factor{GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)} - , cntpct_rdtsc_factor{GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)} - , gputick_rdtsc_factor{GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)} + , ns_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)} + , us_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)} + , ms_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)} + , cntpct_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)} + , gputick_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)} {} std::chrono::nanoseconds WallClock::GetTimeNS() const { @@ -186,7 +186,7 @@ bool WallClock::IsNative() const { WallClock CreateOptimalClock() noexcept { #if defined(ARCHITECTURE_x86_64) auto const& caps = GetCPUCaps(); - return WallClock(!(caps.invariant_tsc && caps.tsc_frequency >= std::nano::den), std::max(caps.tsc_frequency, 1)); + return WallClock(!(caps.invariant_tsc && caps.tsc_frequency >= std::nano::den), caps.tsc_frequency); #elif defined(HAS_NCE) return WallClock(false, 1); #else