【c++】6.延时函数sleep()、usleep()、delay()和计算程序运行时间的函数clock()

2024-06-16 21:38

本文主要是介绍【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()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067617

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估