INNER CODE UNIT · C++
rdtsc
StratCraftsAI/NexusFix · benchmarks/constexpr_serializer_bench.cpp:26
inline uint64_t rdtsc() {
uint64_t lo, hi;
asm volatile("rdtscp" : "=a"(lo), "=d"(hi) :: "rcx");
return (hi << 32) | lo;
}
// Get CPU frequency
double get_cpu_freq_ghz() {
auto start = std::chrono::steady_clock::now();
uint64_t start_tsc = rdtsc();
while (std::chrono::steady_clock::now() - start < std::chrono::milliseconds(100)) {
asm volatile("pause");
}
auto end = std::chrono::steady_clock::now();
uint64_t end_tsc = rdtsc();