zoukankan      html  css  js  c++  java
  • C程序运行计时

    在标准的C/C++中最小的时间单位是毫秒ms,下面代码中clock_t是long; 每经过1ms clock()的值就增加1;常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元

     1 #include<iostream>
     2 #include<ctime>
     3 using namespace std;
     4  
     5 int main()
     6 {
     7     clock_t start,finish;
     8     start=clock();
     9     double result;
    10 
    11     //测试数据,
    12     long long sum;
    13      for(int i=0;i<100000000;i++){
    14          sum+=i;
    15      }
    16  
    17  
    18     finish=clock();
    19     result=(double) (finish-start)/CLOCKS_PER_SEC; 
    20       cout<<result;  //输出单位是s 
    21     return 0;
    22 }

    上面那一种的方法虽然能够计时,但是精度往往达不到我们的要求,这里再介绍一种精度到微秒级别的计时方法,代码如下:

     1 //Windows系统下time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()来计时 by MoreWindows
     2 #include <stdio.h>
     3 #include <windows.h>
     4 
     5 int main()
     6 {    
     7     //用QueryPerformanceCounter()来计时  微秒
     8     LARGE_INTEGER  large_interger;
     9     double dff;
    10     __int64  c1, c2;
    11     QueryPerformanceFrequency(&large_interger);
    12     dff = large_interger.QuadPart;
    13     QueryPerformanceCounter(&large_interger);
    14     c1 = large_interger.QuadPart;
    15     Sleep(800);  //在这里加入测试语句
    16     QueryPerformanceCounter(&large_interger);
    17     c2 = large_interger.QuadPart;
    18     printf("本机高精度计时器频率%lf
    ", dff);
    19     printf("第一次计时器值%I64d 第二次计时器值%I64d 计时器差%I64d
    ", c1, c2, c2 - c1);
    20     printf("计时%lf毫秒
    ", (c2 - c1) * 1000 / dff);
    21     
    22     return 0;
    23 }

    http://www.cnblogs.com/dwdxdy/p/3214905.html

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/liugl7/p/4921212.html
Copyright © 2011-2022 走看看