C计时的几种方法说明及例程
1. 使用clock() 函数

头文件:<time.h>

clock()函数,返回“自程序启动到调用该函数,CPU时钟的计时单元数(clock tick)”

每过1ms,计数值+1
精度:1毫秒
#include <stdio.h>
#include <time.h>

int main()
{
    clock_t start,end; // typedef long clock_t
    start = clock();
    long i= 1000000000L;while(i--){}
    end = clock();

//#define CLOCKS_PER_SEC ((clock_t)1000)
    double duration =(double)(end-start)/CLOCKS_PER_SEC;
    printf("%f\n",duration); // 4.015

return 0;
}
2. 使用time() 函数

头文件:<time.h> 中

clock()返回公元1970.01.01 0:0:0秒算起到现在所经过的秒数。

即Calendar Time,日历时间

精度:1秒
#include <time.h>

int main()
{
    time_t start,end;  // typedef long time_t;
    start = time(NULL); // 等同于 time(&start);
    long i=1000000000L;while(i--){}
    end = time(NULL);

long duration =end - start;
    printf("%ld\n",duration); // 4

return 0;
}
3. 使用GetTickCount () 函数
头文件:<windows.h> 中
在精度要求较高的情况下,可以利用GetTickCount()函数,该函数的返回值是  DWORD型,表示以ms为单位的计算机启动后经历的时间间隔
(最大49.7天)。在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能
用于要求不高的延时程序中。
精度:1毫秒,短时误差15ms
#include <stdio.h>
#include <windows.h>

int main()
{
    DWORD start,end;//typedef unsigned long DWORD;
    start = GetTickCount();
    long i=1000000000L;while(i--){}
    end = GetTickCount();

double duration = (double)(end-start)/1000;
    printf("%f\n",duration); // 3.922
    return 0;
}
4. 使用QueryFrequencyCount () 函数
头文件:<windows.h>
高精度计数器
精度:1微秒,误差不超过0.5微妙(精度为1000 000/(cpu主频)微秒)
#include <stdio.h>
#include <windows.h>

int main()
{
    LARGE_INTEGER f;
    QueryPerformanceFrequency(&f);//获取内部高精度计数器的频率

double dFreq;
    dFreq = (double)f.QuadPart; //获取计数器的频率

LARGE_INTEGER start,end;
    QueryPerformanceCounter(&start);//获取内部高精度计数器当前的计数值
    long i=1000000000L;while(i--){}
    QueryPerformanceCounter(&end);

//时间差 = 计数值差/频率(单位s)
    double duration = (double)(end.QuadPart-start.QuadPart)/dFreq;
    printf("%f\n",duration);// 3.969499
    return 0;
}

 

c中计时的几种方法的更多相关文章

  1. 解析Jquery取得iframe中元素的几种方法

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下   DOM方法:父窗口操作IFRAME:window.frames[&q ...

  2. 转载:WinForm中播放声音的三种方法

    转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...

  3. java中需要关注的3大方面内容/Java中创建对象的几种方法:

    1)垃圾回收 2)内存管理 3)性能优化 Java中创建对象的几种方法: 1)使用new关键字,创建相应的对象 2)通过Class下面的new Instance创建相应的对象 3)使用I/O流读取相应 ...

  4. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  5. C#中文件下载的几种方法演示源码

    内容过程,把内容过程比较重要的内容做个珍藏,如下的内容是关于C#中文件下载的几种方法演示的内容,应该是对各朋友有较大好处. using System;using System.Data;using S ...

  6. Jquery取得iframe中元素的几种方法(转载)

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon ...

  7. js 跨域 Jquery取得iframe中元素的几种方法

    http://www.jb51.net/article/34942.htm 收集利用Jquery取得iframe中元素的几种方法 : 父页面访问子页面 $(document.getElementByI ...

  8. [浪风转载]Jquery取得iframe中元素的几种方法

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon ...

  9. Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID

    query取得iframe中元素的几种方法 在iframe子页面获取父页面元素代码如下: $('#objId', parent.document);// 搞定... 在父页面 获取iframe子页面的 ...

随机推荐

  1. split方法在低版本IE浏览器上无法解析的问题

    前一篇不知道怎么被博客园给删了,重新补发一个. 最近在项目中发现一个很诡异的问题,通过js获取cookie时,发现赋给用户name的时候IE9和低于9以下的浏览器对比时获取到的名字不一样,通过调试发现 ...

  2. 常用px,pt,em换算表

    pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(D ...

  3. 如何监听非本地IP

    做HA的时候,如果每个机器上同时需要监听多个IP的同一个端口.那么肯定是需要写死监听的IP和端口.比如在haproxy里面: frontend free bind default_backend te ...

  4. POJ ---3070 (矩阵乘法求Fibonacci 数列)

    Fibonacci   Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2  ...

  5. [Stephen]转载 如何提高测试用例评审效率

    年前启动的项目,之前一直各种需求文档的评审,之后搁置了一段时间进行其他项目的测试,如今开始各个模块的测试点评审,项目较大,模块较多,仅需求点将近250个.由8个人负责分工完成,几乎每天一个会议对各模块 ...

  6. seleniumRC启动及浏览器实例配置

    一.firefox浏览器实例配置 1.启动用户配置文件管理器 重要:在启动用户配置文件管理器之前,Firefox必须完全关闭.     1)按 support.cdn.mozilla.net/medi ...

  7. Unity 打包后文件系统访问的一个小细节

    Android: 使用 File 类 来访文本文件系统不区分大小写:但是访问 jar 包内的文件是区分大小写的,比如使用 www类,都需要区分大小写. iOS: 使用 File 类 来访文本文件系统严 ...

  8. HW5.5

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  9. puppet运维配置实列

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABQkAAAGBCAIAAABKMKAEAAAgAElEQVR4nOydeXwU9cH/t2o9WutR+7

  10. hdoj 2524 矩形A + B

    矩形A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...