diff options
| author | Morph <39850852+Morph1984@users.noreply.github.com> | 2023-03-21 21:30:02 -0400 |
|---|---|---|
| committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2023-03-27 17:45:22 -0400 |
| commit | e67edd4bb76f832406e1febe79af05eae6493bc8 (patch) | |
| tree | dd123895c15e09d8b2e5110b74f6acc2449f530e | |
| parent | d260571440e16ce9b4a60aa6c93bf79dc95169a2 (diff) | |
core_timing: Make use of MicroSleep for x64 CPUs
For CPUs that support tpause, this should result in significant CPU power savings over thread yield in this spin wait.
| -rw-r--r-- | src/core/core_timing.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index cd4df45228..4f2692b05c 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp @@ -10,6 +10,10 @@ #include "common/windows/timer_resolution.h" #endif +#ifdef ARCHITECTURE_x86_64 +#include "common/x64/cpu_wait.h" +#endif + #include "common/microprofile.h" #include "core/core_timing.h" #include "core/core_timing_util.h" @@ -269,7 +273,11 @@ void CoreTiming::ThreadLoop() { if (wait_time >= timer_resolution_ns) { Common::Windows::SleepForOneTick(); } else { +#ifdef ARCHITECTURE_x86_64 + Common::X64::MicroSleep(); +#else std::this_thread::yield(); +#endif } } |
