精华内容
下载资源
问答
  • 计时函数
    千次阅读
    2021-11-05 00:31:11
    #include<stdio.h>
    #include<time.h>
    clock_t start, stop;//clock_t为clock()函数返回的变量类型
    double duration;//记录被测函数运行时间,以秒为单位
    int main()
    {
    	start = clock();//开始计时
    	//运行代码段
    	
    	//
    	stop = clock();//停止计时
    	duration = (double)(stop - start) / CLOCKS_PER_SEC;//计算运行时间
    	printf("%f\n", duration);
    	return 0;
    }

            clock()函数,头文件为<time.h>,不过这个函数记录的单位不是秒,记录时间最终要除以

    CLOCKS_PER_SEC。表示一秒钟内CPU运行的始终周期数。

            其中CLOCKS_PER_SEC 和 CLK_TCK 是等效的,不过后者在ubuntu中编译报错,最好用

    CLOCKS_PER_SEC。

    更多相关内容
  • 关于clock()计时函数  首先是一段简单的测试代码,功能为测试从文本文件读取数据并赋值给向量后打印输出的运行时间。 int main(int argc, char **argv) { clock_t t1=clock(); ifstream in(data.txt); ...
  • C++计时函数

    千次阅读 2021-10-20 16:26:55
    windows下可以引用 #include <...计时开始 //time start clock_t start,stop; start = clock(); 计时结束 //time end stop = clock(); double endtime=(double)(stop-start)/CLOCKS_PER_SEC;

    windows下可以引用 #include <windows.h>
    在linux下不能使用
    我们可以用#include <time.h> linux和windows下都可以用
    计时开始

    //time start
        clock_t start,stop;
        start = clock();
    

    计时结束

    //time end
        stop = clock();
        double endtime=(double)(stop-start)/CLOCKS_PER_SEC; 
        std::cout << "time: "<<endtime <<"s" <<std::endl;
    

    参考这篇博客:
    https://www.cnblogs.com/shiney/archive/2011/06/30/2095118.html

    C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。
    在MSDN中,查得对clock函数定义如下: clock_t clock( void );
    这个函数返回从“开启这个程序进程” 到 “程序中调用clock()函数” 时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:

     #ifndef _CLOCK_T_DEFINED
     typedef long clock_t;
     #define _CLOCK_T_DEFINED
      #endif
    

    很明显,clock_t是一个长整形数。
    time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
    #define CLOCKS_PER_SEC ((clock_t)1000)
    可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1

    展开全文
  • 计时函数</title> [removed] var timer=(function(){ return function (json){ if(json.currentTime){ var now=new Date(); var year=now.getFullYear();//返回年份(4位数字) var month=now....
  • 通过在QT中分别使用QTime和QElapsedTimer两个类,在一个简单的加法计算器的构造函数中测试其运行时间。结果证明使用QTime时间精度不如QElapsedTimer的计时精度,其运行时间可以精确至us级别,实测时间为0.04ms左右。
  • c++计时函数1

    2022-08-08 21:58:42
    一、linux平台下的计时函数gettimeofdayint gettimeofday ( struct timeval * tv , struct timez
  • MPI计时函数1

    2022-08-08 22:21:15
    }使用 time.h 的函数计时的代码:#include "mpi.h"#include <iostream>#include <math.h>#includ
  • fortran计时函数 1

    2022-08-08 23:19:04
    fortran计时函数 1
  • NX二次开发-UFUN计时函数UF_begin_timer和UF_end_timer博客文章源代码
  • 返回值: 成功:返回从“开启这个程序进程”到“程序中调用clock()函数”时这之间的 CPU 时钟计时单元(clock tick)数。 失败:-1 表示无法得到处理器时间。 注意: 1)程序中遇到sleep()函数消耗的时间不含在内...

       在Linux 环境下,计算一个循环或者处理事件类事情花费多长时间计算C程序运行的时间,可以通过以下三个函数来实现:clock(),time(),gettimeofday()
    示例:

    	long i = 100000000L;
    	/* clock函数持续的时间*/
    	clock_t start, finish;
    	double duration;	
    	start = clock();
    	cout << i << "loops is";
    	while(i--);
    	finish = clock();
    	duration = ((double)(finish - start) / CLOCKS_PER_SEC);
    	    
    	cout << "Clock()  " << duration << "seconds"<<endl;
    
    	/* gettimeofday函数持续的时间*/
    	 i = 100000000L;
    	struct  timeval  start1;
    	struct  timeval  end1;
    	unsigned long timer1;	
    	gettimeofday(&start1, NULL);
    	while (i--);
    	gettimeofday(&end1, NULL);
    	int speedtime = (end1.tv_sec * 1000000 + end1.tv_usec) - (start1.tv_sec * 1000000 + start1.tv_usec);	
    	cout << "gettimeofday = "<< speedtime << endl;
    		 
    	/* time函数持续的时间*/
    	 i = 100000000L;
    	 time_t t1, t2;
    	 time(&t1);
    	 while (i--);
    	 time(&t2);
    	 cout << "time()  " << t2-t1 << endl;
    

    1.clock()

    获取时间精度:毫秒
    头文件: time.h
    函数原型: clock_t clock( void );
    返回值:
    成功:返回从“开启这个程序进程”到“程序中调用clock()函数”时这之间的 CPU 时钟计时单元(clock tick)数。
    失败:-1 表示无法得到处理器时间。
    注意:
    1)程序中遇到sleep()函数消耗的时间不含在内,因为此时CPU资源被释放。
    2)函数返回值为CPU时间片数量(clock tick)值,该值必须除以CLOCKS_PER_SEC这个宏值得到秒为单位的运行时间

    在 POSIX 兼容系统中,CLOCKS_PER_SEC的值为 1,000,000 的,也就是 1MHz。
    在这里插入图片描述

      在 Windows 系统下的 VC2019 中,其定义为:
    在这里插入图片描述
      这表示硬件滴答 1000 下是 1 秒,也即可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加 1。

    2.time()

      获取时间精度:
      函数解释:获取当前的日历时间(Calendar Time)。即从标准时间点(1970年1月1日0时0分0秒)运行到此时时间经过的秒数。
      函数原型
      time_t time(time_t * timer);

    3.gettimeofday()函数

      时间精度:微秒
      函数原型:gettimeofday()

    #include<sys/time.h>
    int gettimeofday(struct timeval*tv, struct timezone *tz )
    

      参数解析:**gettimeofday()会把目前的时间用 tv 结构体返回,当地时区的信息则放到 tz 所指的结构中。其结构体定义为:
    在这里插入图片描述
      返回值
    情况1:tv 或者 tz 都可以为空。如果为空则就不返回其对应的结构体。函数执行成功后返回 0,失败后返回 -1,错误代码存于 errno 中
    情况2:第二个参数一般都为空,因为我们一般都只是为了获得当前时间

    展开全文
  • C/C++中计时函数

    千次阅读 2019-07-02 10:24:52
    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度...

    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录.

      方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数.   

    复制代码

    void test1()
    {
        time_t start,stop;
        start = time(NULL);
        foo();//dosomething
        stop = time(NULL);
        printf("Use Time:%ld\n",(stop-start));
    }

    复制代码

      方法2,clock()函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)

    常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元

    复制代码

    void test2()
    {
        double dur;
        clock_t start,end;
        start = clock();
        foo();//dosomething
        end = clock();
        dur = (double)(end - start);
        printf("Use Time:%f\n",(dur/CLOCKS_PER_SEC));
    }

    复制代码

           方法3,timeGetTime()函数以毫秒计的系统时间。该时间为从系统开启算起所经过的时间,是windows api

    复制代码

    void test3()
    {
        DWORD t1,t2;
        t1 = timeGetTime();
        foo();//dosomething
        t2 = timeGetTime();
        printf("Use Time:%f\n",(t2-t1)*1.0/1000);
    }

    复制代码

            方法4,QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.但是QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.

    复制代码

    void test4()
    {
        LARGE_INTEGER t1,t2,tc;
        QueryPerformanceFrequency(&tc);
        QueryPerformanceCounter(&t1);
        foo();//dosomething
        QueryPerformanceCounter(&t2);
        printf("Use Time:%f\n",(t2.QuadPart - t1.QuadPart)*1.0/tc.QuadPart);
    }

    复制代码

             方法5,GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD

    复制代码

    void test5()
    {
        DWORD t1,t2;
        t1 = GetTickCount();
        foo();//dosomething
        t2 = GetTickCount();
        printf("Use Time:%f\n",(t2-t1)*1.0/1000);
    }

    复制代码

             方法6,RDTSC指令,在Intel   Pentium以上级别的CPU中,有一个称为“时间戳(Time   Stamp)”的部件,它以64位无符号整型数的格式,记录了自CPU上电以来所经过的时钟周期数。由于目前的CPU主频都非常高,因此这个部件可以达到纳秒级的计时精度。这个精确性是上述几种方法所无法比拟的.在Pentium以上的CPU中,提供了一条机器指令RDTSC(Read   Time   Stamp   Counter)来读取这个时间戳的数字,并将其保存在EDX:EAX寄存器对中。由于EDX:EAX寄存器对恰好是Win32平台下C++语言保存函数返回值的寄存器,所以我们可以把这条指令看成是一个普通的函数调用,因为RDTSC不被C++的内嵌汇编器直接支持,所以我们要用_emit伪指令直接嵌入该指令的机器码形式0X0F、0X31

    复制代码

    inline unsigned __int64 GetCycleCount()
    {
        __asm
        {
            _emit 0x0F;
            _emit 0x31;
        }
    }
    
    void test6()
    {
        unsigned long t1,t2;
        t1 = (unsigned long)GetCycleCount();
        foo();//dosomething
        t2 = (unsigned long)GetCycleCount();
        printf("Use Time:%f\n",(t2 - t1)*1.0/FREQUENCY);   //FREQUENCY指CPU的频率
    }

    复制代码

      方法7,gettimeofday() linux环境下的计时函数,int gettimeofday ( struct timeval * tv , struct timezone * tz ),gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中.

    复制代码

    //timeval结构定义为:
    struct timeval{
    long tv_sec; /*秒*/
    long tv_usec; /*微秒*/
    };
    //timezone 结构定义为:
    struct timezone{
    int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/
    int tz_dsttime; /*日光节约时间的状态*/
    };
    void test7()
    {
        struct timeval t1,t2;
        double timeuse;
        gettimeofday(&t1,NULL);
        foo();
        gettimeofday(&t2,NULL);
        timeuse = t2.tv_sec - t1.tv_sec + (t2.tv_usec - t1.tv_usec)/1000000.0;
        printf("Use Time:%f\n",timeuse);
    }

    复制代码

       方法8,linux环境下,用RDTSC指令计时.与方法6是一样的.只不过在linux实现方式有点差异.

    复制代码

    #if defined (__i386__)
    static __inline__ unsigned long long GetCycleCount(void)
    {
            unsigned long long int x;
            __asm__ volatile("rdtsc":"=A"(x));
            return x;
    }
    #elif defined (__x86_64__)
    static __inline__ unsigned long long GetCycleCount(void)
    {
            unsigned hi,lo;
            __asm__ volatile("rdtsc":"=a"(lo),"=d"(hi));
            return ((unsigned long long)lo)|(((unsigned long long)hi)<<32);
    }
    #endif
    
    void test8()
    {
            unsigned long t1,t2;
            t1 = (unsigned long)GetCycleCount();
            foo();//dosomething
            t2 = (unsigned long)GetCycleCount();
            printf("Use Time:%f\n",(t2 - t1)*1.0/FREQUENCY); //FREQUENCY  CPU的频率
    }

    复制代码

    简单的比较表格如下

    序号函数类型精度级别时间
    1timeC系统调用<1s
    2clcokC系统调用<10ms
    3timeGetTimeWindows API<1ms
    4QueryPerformanceCounterWindows API<0.1ms
    5GetTickCountWindows API<1ms
    6RDTSC指令<0.1ms
    7gettimeofday linux环境下C系统调用<0.1ms


      总结,方法1,2,7,8可以在linux环境下执行,方法1,2,3,4,5,6可以在windows环境下执行.其中,timeGetTime()和GetTickCount()的返回值类型为DWORD,当统计的毫妙数过大时,将会使结果归0,影响统计结果.
            测试结果,windows环境下,主频为1.6GHz,单位为秒.

    1 Use Time:0
    2 Use Time:0.390000
    3 Use Time:0.388000
    4 Use Time:0.394704
    5 Use Time:0.407000
    6 Use Time:0.398684

      linux环境下,主频为2.67GHz,单位为秒

    1 Use Time:1
    2 Use Time:0.290000
    7 Use Time:0.288476
    8 Use Time:0.297843

          由于time()计时函数的精度比较低,多次运行程序时,将会得到不同的结果,时而为0,时而为1

    foo()函数如下:

    复制代码

    void foo()
    {
        long i;
        for (i=0;i<100000000;i++)
        {
            long a= 0;
            a = a+1;
        }
    }

    复制代码

    原文地址:https://www.cnblogs.com/dwdxdy/p/3214905.html

    展开全文
  • 内容索引:VC/C++源码,系统相关,计时函数 介绍一组自己封装的的计时函数。使用该组函数可以简化测试工作,从而把更多的精力放在主要工作上,不需要过多地维护计时代码,仅仅使用两个宏就可以方便、精确地实现多个...
  • Java计时函数

    2020-03-23 14:14:06
    Java计时函数currentTimeMills()  System.currentTimeMills()计时精确到毫秒级,跟计算机以1970年1月1日0时为计时起点一样,该函数方法统计的也是从1970年1月1日0时开始,到程序运行到该函数时刻的毫秒总数。  该...
  • Python中的计时函数

    千次阅读 2020-04-13 11:54:00
    我们已经知道使用cell magic或者line magic里面的%%time或者%time能够对Python程序中某一模块的运行时间进行计算,下面是一种更为灵活的计时方法,利用了计时函数time.time() import time time_start=time.time()...
  • 实现一个网页上多个倒计时函数封装,提高网页的速度。
  • #include <iostream> #include <ctime> #include <ratio> #include <chrono>...auto start = std::chrono::high_resolution_clock::now();...Facevisa_TensorRT_Inference_DET_Batch(param->...
  • excel倒计时函数典型案例-节日倒计时和生日倒计时计算.docx
  • 前言 相信大家都知道日期格式处理在前端的日常...下面介绍一些常规的函数,希望对大家有用。 月历效果图 函数目录 getFormatDateStr 获得指定日期格式的字符串; getDayPrevAfter 获得n天前/后的日期; formatD
  • C语言计时函数

    千次阅读 2017-07-28 15:57:28
    :C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。 clock()函数与clock_t类型 头文件 :time.h 函数签名 : ...
  • Matlab 计时函数

    千次阅读 2017-03-16 16:45:16
    因为做实验要用到趁着跑程序的空当,记录下Matlab计时函数的使用。当你需要计算一组Matlab操作的运行时间时,可以使用tic和toc函数。tic函数启动一个秒表,表示计时开始;toc则停止这个秒表,表示计时结束,并计算出...
  • Qt 算法->程序运行时间(计时函数)

    千次阅读 2019-05-22 11:10:29
    程序运行时间可是编程中一项重要指标 在QT中, 利用QTime, 精度为: ms 级--------------在Qt中使用 #include <QDebug> #include <QTime> QTime qTime; qTime.start();...time.elaps...
  • C/C++程序计时函数

    万次阅读 多人点赞 2018-05-20 23:55:18
    clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”...
  • matlab中的计时函数

    万次阅读 2018-08-29 10:32:32
    matlab的计时函数主要有tic, toc cputime,etime等 (1)tic和toc函数  这两个函数一般配合使用,tic表示计时的开始,toc表示计时的结束。  格式如:  tic  任意表达式  toc  t=toc (2)cputime函数 ...
  • CUDA中的计时函数

    2019-01-26 17:55:36
    在C和C++中有clock计时函数,由于CUDA是包含C的,所以在CUDA中我们也同样可以使用这个函数。 clock函数的定义:clock函数测的是在程序中从程序开始到调用clock函数之间在CPU上所经过的时钟数(CLOCKS)。 clock...
  • JS按钮倒计时函数

    2013-03-25 11:41:34
    JS按钮倒计时函数
  • 简单地说,tic和toc是用来记录matlab命令执行的时间tic用来保存当前时间,而后使用toc来记录程序...Matlab里面的计时函数:Matlab7的计时函数主要有tic,toc,cputime和etime等,计时函数可以定量的计算完成制定程序所
  • 详解js中常规日期格式处理、月历渲染和倒计时函数.docx
  • OpenCV-计时函数cv::getTickCount&cv::getTickFrequency

    万次阅读 多人点赞 2021-04-30 15:58:16
    本文介绍了一种便于记忆的OpenCV计时函数,方便大家使用。
  • C# 计时函数(毫秒)

    千次阅读 2018-04-28 16:09:00
    using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; class Program ... //调用API函数 [DllImport("kernel32.dll")] extern static short ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,392
精华内容 57,756
关键字:

计时函数