我正在尝试评估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/