我正在尝试评估usleep vs std::this_thread::sleep_for,并查看使用std::this_thread::sleep_for vs usleep时生成的更多指令。

结果在这里:
https://godbolt.org/g/ZyCCmj

int main(int, char**)
{
    std::this_thread::sleep_for(std::chrono::milliseconds{30});
    usleep(30000);
    return 0;
}

我在使用std::this_thread::sleep_for时看到 20条。

是否可以得出结论,认为usleep比std::this_thread::sleep_for效率更高?

最佳答案



否。在上面的代码中,nanosleep(2)是系统调用,usleep(3)是库函数。 usleep(3)在内部调用nanosleep(2) 。因此,如果使用usleep(3),则无法在自己的程序中看到这些汇编代码,但是它们存在于库函数本身中。

但是,如果您的程序打算进入睡眠状态,那么讨论睡眠功能的性能也许毫无意义。

而且,std::this_thread::sleep_for更可移植,应该首选。 usleep()甚至在POSIX standard中被标记为过时的。

关于c++ - 生成代码-usleep vs std::this_thread::sleep_for,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49081422/

10-10 21:27