gpt4 book ai didi

android - 使用 ndk 在 Android 上将耗时报告为 0ns

转载 作者:太空狗 更新时间:2023-10-29 13:37:14 25 4
gpt4 key购买 nike

我有以下代码

static unsigned long long GetCurrentTimeInNanoseconds()
{
timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
return (unsigned long long)(t.tv_sec*1000000000ULL) + (unsigned long long)t.tv_nsec;
}

当我这样使用它时:

unsigned long long current = GetCurrentTimeInNanoseconds();
usleep(5000);
LOG_MESSAGE1( "sleep: %llu ns", GetCurrentTimeInNanoseconds() - current);

它打印这个:

“ sleep :5126953 纳秒”

但是如果我这样使用它:

current = GetCurrentTimeInNanoseconds();
glFinish();
LOG_MESSAGE1( "finish: %llu ns", GetCurrentTimeInNanoseconds() - current);

然后打印:

“完成:0 纳秒”

glFinish 是 opengl 中的一个阻塞调用。当我更改其中的一行代码时,我的应用程序会显着变慢。那么在 android 上执行 glFinish 怎么可能需要 0ns 呢?它可以是一个小睡吗?否则有人会发现我如何获得时间或使用时间有任何问题吗?

最佳答案

这可能对您有所帮助。

Android(Linux) uptime using CLOCK_MONOTONIC

特别是第一个答案。

CLOCK_MONOTONIC stops when the system is suspended. Some people felt this was a mistake, and subsequently there have been patches for adding a CLOCK_BOOTTIME clock: https://lwn.net/Articles/428176/ . I don't know if these patches have yet been included in the mainline kernel.

关于android - 使用 ndk 在 Android 上将耗时报告为 0ns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9354054/

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