我正在寻找一种在 Android 上获得高分辨率计时器(时钟源)的方法。这必须是本机代码,并且可能相当不可移植。我想要微秒级的分辨率,或者更好。对于我的特定应用,分辨率比精度更重要,单调的计时器是最好的。我一直在使用 Android 4.0.3 在特定的 ARMv7 芯片组上进行测试。
到目前为止我已经尝试过:
clock_gettime(CLOCK_MONOTONIC)
:目标硬件上以 1ms 为单位的增量(编辑最初我认为 10ms 由于我的代码中的错误,1ms 是正确的但仍然不是很好)gettimeofday()
:类似于clock_gettime
我没有尝试过的:
System.nanoTime()
: 这不是原生的。我相信它基于clock_gettime(),但我更愿意找出引擎盖下的任何东西并直接使用它。/dev/rtc
- 某种 ARM 指令/设施,可能是
SysTick
(http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf)或通用定时器(GPT)。
另见(相关问题,但没有答案):