Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';s相当于Windows';OSX上的QueryPerformanceCounter?_C++_C_Windows_Unix_Porting - Fatal编程技术网

C++ 什么';s相当于Windows';OSX上的QueryPerformanceCounter?

C++ 什么';s相当于Windows';OSX上的QueryPerformanceCounter?,c++,c,windows,unix,porting,C++,C,Windows,Unix,Porting,我正在将一个库从Windows移植到*NIX(当前为OSX),现在有人知道我可以使用什么函数来代替Microsoft的QueryPerformanceCounter和QueryPerformanceFrequency吗? (以及此处提到的其他功能) -是Posix!如果HPET不存在,将返回到更差的计数器。(不过这不应该是个问题) 分辨率应该在+10Mhz左右。早在您使用uclock或深入汇编程序以阅读 G.试试boost的便携式高分辨率定时功能 更新(2年后,马克在下面的评论中提示): 这些

我正在将一个库从Windows移植到*NIX(当前为OSX),现在有人知道我可以使用什么函数来代替Microsoft的QueryPerformanceCounter和QueryPerformanceFrequency吗?

(以及此处提到的其他功能) -是Posix!如果HPET不存在,将返回到更差的计数器。(不过这不应该是个问题)


分辨率应该在+10Mhz左右。

早在您使用uclock或深入汇编程序以阅读

G.

试试boost的便携式高分辨率定时功能

更新(2年后,马克在下面的评论中提示):


这些天我用的是一个高分辨率的时钟

他询问了OS X。使用CoreAudio的以下API:

AudioConvertHostTimeToNanos(AudioGetCurrentHostTime())

在OSX上,
mach\u absolute\u time
mach\u timebase\u info
是Win32 QueryPerformance*函数的最佳等价物


请参见

如果您使用的是高分辨率计时器,则很可能不会进入省电模式。您可能不会进入省电模式,但某些其他过程可能会将系统置于该模式。这取决于您的系统具有何种约束。对于一般公众来说,这是不保证的。如果我没记错的话,如果你的进程切换CPU,它也会出错。。。我们已经使用tsc+linux和节能功能的效果进行了一些评估。每个核心都有自己的tsc。最近的AMD和Intel芯片实现了一致的RDTSC。对我来说已经足够好了。
clock\u gettime
是POSIX实时扩展的一部分,不幸的是它没有在Mac OS X上实现。这不是一个很好的答案。clock_gettime不受支持,它以秒为单位返回时间,而不是计数器刻度(即使它受支持)。看起来这在linux/mac上可以工作,但引用:使用亚秒分辨率的时钟获取UTC时间。在Unix系统上,这是使用GetTimeOfDay实现的。在大多数Win32平台上,它是使用ftime实现的。Win32系统通常无法通过此API实现微秒分辨率。如果更高的分辨率对您的应用程序至关重要,请测试您的平台以查看达到的分辨率。谢谢,ptime没有我想象的那么便携。尽管如此,你还是提示我在这里更新我的答案。另见