diff --git a/source/lib/sysdep/arch/x86_x64/x86_x64.cpp b/source/lib/sysdep/arch/x86_x64/x86_x64.cpp index 8c8f48fb53..e32645d210 100644 --- a/source/lib/sysdep/arch/x86_x64/x86_x64.cpp +++ b/source/lib/sysdep/arch/x86_x64/x86_x64.cpp @@ -479,7 +479,7 @@ double x86_x64_ClockFrequency() size_t numSamples = 16; // if clock is low-res, do less samples so it doesn't take too long. - // balance measuring time (~ 10 ms) and accuracy (< 1 0/00 error - + // balance measuring time (~ 10 ms) and accuracy (< 0.1% error - // ok for using the TSC as a time reference) if(timer_Resolution() >= 1e-3) numSamples = 8; diff --git a/source/ps/Util.cpp b/source/ps/Util.cpp index adf5313188..02bdc60913 100644 --- a/source/ps/Util.cpp +++ b/source/ps/Util.cpp @@ -100,13 +100,15 @@ void WriteSystemInfo() // CPU fprintf(f, "CPU : %s, %s (%dx%dx%d)", un.machine, cpu_IdentifierString(), (int)cpu_topology_NumPackages(), (int)cpu_topology_CoresPerPackage(), (int)cpu_topology_LogicalPerCore()); - const double cpu_freq = os_cpu_ClockFrequency(); - if(cpu_freq != 0.0f) + double cpuClock = os_cpu_ClockFrequency(); // query OS (may fail) + if(cpuClock <= 0.0) + cpuClock = x86_x64_ClockFrequency(); // measure (takes a few ms) + if(cpuClock > 0.0) { - if(cpu_freq < 1e9) - fprintf(f, ", %.2f MHz\n", cpu_freq*1e-6); + if(cpuClock < 1e9) + fprintf(f, ", %.2f MHz\n", cpuClock*1e-6); else - fprintf(f, ", %.2f GHz\n", cpu_freq*1e-9); + fprintf(f, ", %.2f GHz\n", cpuClock*1e-9); } else fprintf(f, "\n");