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()函数,目瞪口呆!!!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java实现Date日期加一天[通俗易懂]

    Java实现Date日期加一天[通俗易懂]因为在项目中遇到了需要将日期进行加减一些天数的操作,但是自己加需要考虑到跨月的情况,所以便找了Java提供的相关的API,方法如下date=newdate();//取时间Calendarcalendar=newGregorianCalendar();calendar.setTime(date);calendar.add(calendar.DATE,1);//把日期往……

  • Django之模板继承

    为了在Django模板配置中减少代码的冗余,需使用模板继承1.语法2.步骤(1)创建一个base.html把需要显示的页面内容写在里面(2)在title部分写个盒子,以后谁来扩展就在这里面

    2021年12月29日
  • js保留小数点后面两位

    首先框的type一定要是numberbox才有precision这个属性格式化函数那里也需要调用precision2如果你需要保留四位formatter:precision4,options:{precision:4,},

  • 一文搞懂基因融合(gene fusion)的定义、产生机制及鉴定方法[通俗易懂]

    一文搞懂基因融合(gene fusion)的定义、产生机制及鉴定方法[通俗易懂]一般来说,基因融合是指基因组层面的融合。但转录组层面也可能发生融合,主要是由于两个不同基因转录产生的RNA,由于某种原因融合在了一起,形成新的融合RNA,该RNA可能编码蛋白,也可能为非编码。而基因组

  • xshell连接虚拟机使用的是什么连接模式_虚拟机安装ssh服务

    xshell连接虚拟机使用的是什么连接模式_虚拟机安装ssh服务XShell使用前提:1.对应的需要连接的虚拟机在vm中开机着2.下载并安装好XShell3.虚拟机网络连通(具体可看(5条消息)Hadoop(1)——Hadoop集群构建(4)——Linux系统网络配置_连胜是我偶像的博客-CSDN博客使用教程:1.点击新建,输入名称(该名称为xshell中使用的名称),输入主机(对应虚拟机的ip地址)2.右键新建的会话,点击打开3.输入账号密码进行登录4.成功标志…

  • SpringBoot事务配置管理[通俗易懂]

    SpringBoot事务配置管理[通俗易懂]1.事务使用功能场景:由于数据操作在顺序执行的过程中,线上可能有各种无法预知的问题,任何一步操作都有可能发生异常,异常则会导致后续的操作无法完成,此时由于业务逻辑并未正确的完成,所以在之前操作数据库的动作并不可靠,需要在这种情况下进行数据的回滚。事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务未进行操作的状态。事务管理是SpringBoot框架中最为常用的功能之一,我们在实际应用开发时,基本上在service层处理业务逻辑的时候都要加上事

发表回复

您的电子邮箱地址不会被公开。

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