gpt4 book ai didi

java - 根据CPU时钟测量时间?

转载 作者:行者123 更新时间:2023-12-04 05:49:40 29 4
gpt4 key购买 nike

我读过一些低延迟技术论文,他们通过 CPU 测量计时,因为它更准确。

通常在 Java 中我会使用:

System.nanoTime()

在 C++ 中,我相信我曾经使用过一种性能计数器方法,我在网上找到了该方法可以将精度提高到纳秒。它使用 LARGE_INTEGER,分配给您希望测量的准确度,然后通过引用传递给 QueryPerformanceCounter() 并返回除以频率的答案。

是否有任何 Java 等效代码可以根据 CPU 测量时间,还是必须使用某种 PInvoke?

编辑:

https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCYQFjAA&url=http%3A%2F%2Fdisruptor.googlecode.com%2Ffiles%2FDisruptor-1.0.pdf&ei=ImmQT5WQMOaW0QWW2sTwAQ&usg=AFQjCNEeGmYXzJa8huMdRGN2p4n8YH-jfg

To time at this level of precision it is necessary to use time stamp counters from the CPU. We chose CPUs with an invariant TSC because older processors suffer from changing frequency due to power saving and sleep states.



我对 Windows 和 Linux 的答案很感兴趣,但如果人们能解释他们的答案是否特定于某个答案,我将不胜感激。

最佳答案

System.nanoTime() 可以有一个快速的纳秒分辨率计时器,具体取决于操作系统。在某些操作系统上,这与 20 ns 一样快。

在这个库中,我使用了 RDTSC,因为 RHEL 5.x 不是那些速度很快的操作系统之一。 :( https://github.com/peter-lawrey/Java-Thread-Affinity 在快速 PC 上花费不到 10 ns。

使用 cpu 计数器的问题在于它在不同的套接字上是不同的。如果您的程序只在一个套接字上运行,这不是问题。

关于java - 根据CPU时钟测量时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235094/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com