不,它们没有毫秒精度.clock并且GetTickCount在大多数系统上具有4到15毫秒的精度.QueryPerformanceCounter精度在微秒到纳秒范围内.
clockGetTickCount如果您正在使用Microsoft的C运行时库,那么它就是一个包装器,如果您正在使用MS编译器,那么您可能就是这样.GetTickCount返回一个以毫秒为单位的值,但在经过一毫秒后它不会增加一毫秒.它只在系统时钟中断发生时递增,每4到15毫秒 - 通常是大约15毫秒,但它可以由应用程序更改.这会影响整个计算机:它会影响线程调度,更频繁的中断的开销也会减少实际运行程序代码所需的CPU时间,所以除非你真的需要它,否则不要这样做.如果您的计算机的频率超过15毫秒,则其他一些应用程序已修改了节拍中断频率.
QueryPerformanceCounter使用系统上可用的任何高分辨率计时器.在过去,它通常基于处理器的内部时钟周期计数,因此将计入2-3GHz,或大约0.5ns.不幸的是,有些处理器会改变计数器在低功耗状态下的速率,而在多CPU系统(即多处理器插槽)中,如果CPU的速度不同,则会出现问题.Windows现在使用其他更可靠的来源,但它们的分辨率不如处理器高.QueryPerformanceFrequency告诉你一秒内发生了多少滴答.要获得毫秒,请将QPC样本的差值乘以1000,然后除以结果QueryPerformanceFrequency.
clock
一个 C++ 函数。它返回自应用程序启动以来的CPU 滴答数。要将其转换为秒,请将其除以CLOCKS_PER_SEC。
GetTickCount
Win32 API 函数。返回自系统启动以来的毫秒数。
QueryPerformanceCounter
Win32 API 函数。性能计数器是一个高分辨率计数器,随着时间的推移而增加。要将其转换为秒,请将其除以QueryPerformanceFrequency。