zoukankan      html  css  js  c++  java
  • 函数运行时间计算方法

    在写代码中,有时候我们需要评估某段代码或者函数的执行时间;方法就是在该段代码或者函数前面,记录一个时间T1,在代码段或函数后面记录时间T2,那其运行时间就是T2-T1;

    就是简单的减法!!!

    那具体的实现方法呢?我这里有两个,给大家参考:

    一,clock();

    clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t;头文件:time.h;

    typedef long clock_t;可见clock_t为长整型;

    在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
    #define CLOCKS_PER_SEC ((clock_t)1000)
    例子:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main(void)
    {
    long i = 10000000L;
    clock_t start, finish;
    double duration;
    /* 测量一个事件持续的时间*/
    printf( "Time to do %ld empty loops is ", i) ;
    start = clock();
    while( i-- );
    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf( "%f seconds ", duration );
    system("pause");
    }
     
    二,另一种形式就是timeval结构体,定义如下:
    struct timeval
    {
    time_t tv_sec; /* Seconds. */
    suseconds_t tv_usec; /* Microseconds. */
    };
    例子:
    #include <stdio.h>
    #include <sys/time.h>
    #include <time.h>

    int main(int argc, char * argv[])
    {
    struct timeval tv; //定义
    while(1){
    gettimeofday(&tv, NULL); //获取时间
    printf("time %u:%u ", tv.tv_sec, tv.tv_usec);
    sleep(2);
    }
    return 0;
    }
     
    两种方法的区别:
    1,若是粗略的计算,都可以使用;
    2,区别在于定义上:clock的最小精度为毫秒(ms);使用的节拍来定义;
    timeval精确到微秒(us),获取的是系统时间,而且还有秒;
     
    具体的使用,根据实际情况来决定!祝大家的代码中bug越来越少。
     
     
     
     
     
  • 相关阅读:
    Javascript獲取濟覽器高屏幕寬高
    引用CSS的問題
    轮胎尺寸周长一览表
    C# 配置文件
    C# 正则表达式替换分组内的内容
    按钮的背景图
    WPF 设置全屏
    窗体内嵌外部程序的显示,获取控件的图片
    将图像转换成一个图标
    resharper 6.0 注册码
  • 原文地址:https://www.cnblogs.com/cyc2009/p/6421892.html
Copyright © 2011-2022 走看看