zoukankan      html  css  js  c++  java
  • 【技巧】clock()函数记录程序运行时间(算法效率比较)


        相关

    • 头文件
      time.h
    • 函数
      clock_t __cdecl1 clock(void)
      返回处理器调用某个进程或函数所经过的硬件滴答数(clock_t)。
    • 常量
      CLK_TCK2(Clock tick硬件(时钟)滴答)
    • 数据类型
      typedef long clock_t

        实现


    思路

    ///
      clock ( ) 的返回值为:自程序开始运行至此函数被调用时所经过的硬件滴答数。
      分别取代码前后的clock tick数并作差,即为代码运行所经历的clock tick,再通过常量CLK_TCK便可得到代码运行时间。


    应用

    算法效率比较
    以一个简单的交换数据为例:

    #include <stdio.h>
    #include <time.h>
    int main(){
    	clock_ start;
    	int a,b,i;
    	
    	start = clock();//开始时间
    	
    	for (i = 0; i < 1000000; i++){//程序运行一次的时间很可能小于一个硬件滴答的时间,所以要循环多次。
    	//————————————————————算法区域——————————————————————
    		a = a + b;
    		b = a - b;
    		a = a - b;
    	//————————————————————算法区域——————————————————————
    	}
    	
    	printf("%lf
    ",(double)(clock() - start) / CLK_TCK);//结束时间 - 开始时间
    	return 0;
    }
    

    我们还可以通过以下方法输出其运行一次所用时间:

    	printf("%e
    ",(double)(clock() - start) / CLK_TCK / 1000000);
    

    1. __cdecl: __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 ↩︎

    2. CLK_TCK: 每秒硬件滴答的数量,在不同编译环境下,此常量值有可能不同。(VC++6.0下为1000) ↩︎

  • 相关阅读:
    asp.net中ashx文件如何调用session
    NetAdvantage webdatagrid 控件的一些属性
    .NET 配置文件简单使用
    Dictionary的遍历和修改
    利用html+ashx实现aspx的功能
    .ashx
    jQuery AJAX实现调用页面后台方法
    用JS实现AJAX
    WCF系列学习5天速成
    介绍一个小工具 Linqer
  • 原文地址:https://www.cnblogs.com/gaolihai/p/13149773.html
Copyright © 2011-2022 走看看