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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows关闭端口方法[通俗易懂]

    windows关闭端口方法[通俗易懂]windows关闭端口方法在介绍各种端口的作用前,这里先介绍一下在Windows中如何关闭/打开端口,因为默认的情况下,有很多不安全的或没有什么用的端口是开启的,比如Telnet服务的23端口、FT

    2022年8月5日
    5
  • 计算机网络谢希仁第七版 课后答案

    计算机网络谢希仁第七版 课后答案谢希仁计算机网络第七版课后答案第一章概述1-01计算机网络向用户可以提供那些服务?答:连通性和共享1-02简述分组交换的要点。答:(1)报文分组,加首部(2)经路由器储存转发(3)在目的地合并1-03试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。答:(1)电路交换:端对端通信质量因约定了通信资源获得可靠保障,对连续传送大量数据效率高。(2)报文交换:无须预约传输带…

    2022年5月3日
    52
  • (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)

    (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)

    2022年1月31日
    48
  • svn 配置文件_svn环境配置

    svn 配置文件_svn环境配置SVN配置文件说明svnserve是SVN自带的一个轻型服务器,SVN用户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限。一、svnserve配置文件概述svnserve配置文件通常由以下3个文本文件组成:svn服务配置文件,该文件版…

    2025年11月8日
    2
  • IntelliJ IDEA配置Maven详解[通俗易懂]

    IntelliJ IDEA配置Maven详解[通俗易懂]1.下载Maven官方地址:http://maven.apache.org/download.cgi目前最新版是apache-maven-3.8.3版本,我当时使用的是apache-maven-3.5.2版本,大家也可以下载最新版本。Apache-maven-3.5.2下载地址:http://archive.apache.org/dist/maven/maven-3/下载后的版本如下:解压并新建一个本地仓库文件夹:2.配置本地仓库路径在MAVE_HOME/conf/setti

    2025年6月1日
    4
  • 一比一还原axios源码(五)—— 拦截器「建议收藏」

    上一篇,我们扩展了Axios,构建了一个Axios类,然后通过这个Axios工厂类,创建真正的axios实例。那么今天,我们来实现下Axios的拦截器也就是interceptors。我们来简单看下Ax

    2022年3月25日
    42

发表回复

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

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