本文主要是介绍【c++】6.延时函数sleep()、usleep()、delay()和计算程序运行时间的函数clock(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
延时函数delay(),sleep(),usleep()
推荐使用以下延迟:
#include <unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
sleep(10); //程序挂起10s
usleep(100); //程序挂起100us
可以参考:Linux的sleep()
和usleep()
的使用和区别: https://blog.csdn.net/shenwansangz/article/details/50108197
也可以使用下面方法:
#include <time.h> /* 调用时务必加上该头文件 */
// 自定义的一个延时函数delay()
void delay(int seconds) // 参数必须为整型,表示延时多少秒
{clock_t start = clock();clock_t lay = (clock_t)seconds * CLOCKS_PER_SEC;while ((clock()-start) < lay);}void delay(double seconds) // 参数为双精度浮点型。这个函数是我修改的上面那个函数,重载一下。{double start = clock();double lay = (double)seconds * CLOCKS_PER_SEC;while ((clock()-start) < lay);}
百度Apollo里面用的是延时微秒usleep(unsigned int __useconds)
和延时秒sleep(unsigned int __seconds)
函数,他们的输入参数也都是整数,不能为浮点数,
比如不能sleep(0.5)
来表示延时0.5s
。 但是当函数设定的计时器到期,或者接收到信号、程序发生中断都会导致程序继续执行。
计算运行时间的函数:
#include <ctime>
#include <iostream>
// g++ test.cpp `pkg-config opencv --libs --cflags` -std=c++11 -pthread -o testint main() {clock_t timr_start = clock();double a = 12345 * 54321;std::cout << "time use " << (clock() - timr_start) / (double)CLOCKS_PER_SEC<< "s" << std::endl;std::cout << "time use "<< 1000 * (clock() - timr_start) / (double)CLOCKS_PER_SEC << "ms"<< std::endl;
}
下面是运行两次该程序的截图:
可知,计算程序运行时间,最好使用毫秒ms
,因为使用秒s
会有精度损失。
这篇关于【c++】6.延时函数sleep()、usleep()、delay()和计算程序运行时间的函数clock()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!