C\C++中计时、延时函数「建议收藏」

C\C++中计时、延时函数「建议收藏」C\C++标准库中提供了两种计时函数clock()和time()。其用法如下:(1)clock()函数用法voidtimeConsume(){doublestart,stop,durationTime;start=clock();/*…代码片段*/stop=clock();durationTime

大家好,又见面了,我是你们的朋友全栈君。

C\C++标准库中提供了两种计时函数clock()和time()。其用法如下:
(1)clock()函数用法

void timeConsume()
{
    double start,stop,durationTime;
    start = clock();
    /*

    ...代码片段

    */
    stop = clock();

    durationTime = ((double)(stop-start))/CLK_TCK;
    cout << "程序耗时:" << durationTime << " s" << endl;
}

clock()函数返回值类型为clock_t.该函数计算结果是以内部处理器时间为计量单位的,所以必须把它除以时钟频率,从而得到以秒为单位的时间。这种方法在机器上测量的很精确。在这里Windows和Linux环境下会有所区别.
Linux环境下,处理器内部时间频率为:CLOCKS_PER_SEC.

(2)time()函数用法

void timeConsume()
{
    double start,stop,durationTime;
    start = time(NULL);
    /*

    ...代码片段

    */
    stop = time(NULL);

    durationTime = (double)difftime(stop, start);
    cout << "程序耗时:" << durationTime << " s" << endl;
}

time()函数返回值类型为time_t,所以也需要在输出前将其转换为double类型。与clock不同的是time()函数有一个参数,用来说明存放时间信息的位置。由于并不想保存这个时间,所以将参数设置为NULL。但是这种计时方法不如clock()函数精确,但是它不需要有关时钟频率的信息。

(3)延时函数

在标准库中可以使用Sleep()函数进行延时,其单位是毫秒,如果想要延迟5秒则其方法如下:

Sleep(5*1000);

在MFC中也可以使用_sleep()函数进行实现延时功能。在Windows环境下,Sleep()函数首字母大写,而在Linux系统下sleep()函数首字母要小写。在Linux系统中sleep()函数的单位是秒而不是毫秒,而在Windows环境下Sleep()函数是以毫秒为单位。这是两者之间的区别。

Windows环境下计时延时函数代码如下:

#include <iostream>
#include <Windows.h>

using namespace std;
int main()
{
    double start, stop, durationTime;
    start = clock();

    Sleep(5 * 1000);    //程序延时5s
    stop = clock();
    durationTime = ((double)(stop - start)) / CLK_TCK;
    cout << "总耗时:" << durationTime << endl << endl;
    return 0;
}

运行结果如图所示:
这里写图片描述

Linux环境下代码如下:

#include <iostream>
#include <unistd.h>

using namespace std;

int main()
{
    double startTime,stopTime,durationTimeTime;

    startTime=time(NULL);

    sleep(5);

    stopTime=time(NULL);

    durationTimeTime = (double)difftime(stopTime,startTime);

    cout << "耗时(time): " << durationTimeTime << " s" << endl;


    return 0;
}

运行结果如图所示:
这里写图片描述

感兴趣的小伙伴可以在Linux环境下试一下clock()函数,目瞪口呆!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148999.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件安装管家(2021年4月15更新)

    软件安装管家(2021年4月15更新)在网上看到许多小伙伴在问软件安装管家公众号为什么不能用了,在这里就把他们的一些资源整理出来分享给大家啦!各位观众老爷赶紧点赞收藏吧!软件导航①电脑系统 ②办公软件③图像处理④影视动画⑤AutoCAD⑥3D设计⑦机械设计⑧建筑设计⑨网页设计⑩开发编程⑪数据分析⑫仿真模拟⑬行业软件软件目录①电脑系统 安装环境PE工具箱Vmware(虚拟机)Windows10U盘安装win10直接安装win10虚拟机装win10Win10官方原版镜像文件下载地址汇总Windows7U盘安装win7直接安装

    2022年6月4日
    90
  • 在单调的队列

    在单调的队列

    2022年1月15日
    66
  • 1521端口 mysql_Linux开放1521端口允许网络连接Oracle Listener

    1521端口 mysql_Linux开放1521端口允许网络连接Oracle Listener症状:1.TCP/IP连接是通的。可以用ping命令测试。2.服务器上OracleListener已经启动。lsnrctlstatus查看listener状态lsnrctlstart启动Oraclelistener3.客户端得到的错误信息通常是:ORA-12170:TNS:连接超时这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)解决…

    2022年5月1日
    111
  • em算法在高斯混合模型中的应用_高斯分布概率计算公式

    em算法在高斯混合模型中的应用_高斯分布概率计算公式一个例子高斯混合模型(GaussianMixedModel)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。如图1,图中的点在我们看来明显分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生成而来。但是如果没有GMM,那么只能用一

    2022年10月21日
    0
  • CSS中 RGB颜色查询对照表

    CSS中 RGB颜色查询对照表颜色代码表Ⅰ #000000 #2F0000 #600030 #460046 #28004D #272727 #4D0000 #820041 #5E005E #3A006F #3C3C3C #600000 #9F0050 #750075 #4B0091

    2022年5月16日
    34
  • ioctl与FIONREAD

    ioctl与FIONREADFIONREAD,就是返回缓冲区有多少字节。输入有个输入缓冲区,用ioctl(0,FIONREAD,&nread);能得到缓冲区里面有多少字节要被读取。值放在nread里面了。然后就可以read了。nread=read(0,buffer,nread);

    2022年7月23日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号