C++ 毫秒时间
来源:互联网 发布:人人网络代理 编辑:程序博客网 时间:2024/05/16 17:36
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。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#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\n", duration ;
system("pause";
}
运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
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。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#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\n", duration ;
system("pause";
}
运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
- C语言获取毫秒时间
- C/C++获取当前系统毫秒时间
- C/C++获取当前系统毫秒时间 .
- Objective-C - 获取毫秒时间戳:
- Objective-C - 获取毫秒时间戳
- c/c++ 获取时间, 精确到毫秒
- C/C++毫秒时间戳函数
- C与Java中取精确到毫秒的时间
- Objective-c NSDate 取时间,日期,星期,毫秒等
- Objective-c NSDate 取时间,日期,星期,毫秒等
- 怎样用c程序处理涉及到毫秒的时间加减?
- C语言如何获得精确到毫秒的时间
- Objective-c NSDate 取时间,日期,星期,毫秒等
- 转:C/C++获取当前系统毫秒时间
- Objective-c NSDate 取时间,日期,星期,毫秒等
- C语言如何获得精确到毫秒的时间
- 日志时间打印(精确到毫秒)C/C++
- windows c/c++ 代码运行时间,毫秒级
- 求助:一种数独解法 我运行100多个小时都没运行出结果(已解决)
- 备份sd卡上的操作系统
- 笔试面试题——多线程
- Android中AsyncTask的简单用法
- 该服务器的安全证书尚未生效
- C++ 毫秒时间
- java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- 部分解决Source Insight中文输入法打开时输入的乱码问题和自动添加注释
- 一次痛苦的Coredump定位过程
- Android整体印象
- Total Commander配置详解
- Forms: How to Configure Forms Builder to run forms locally
- AS3.0 DisplayObjectContainer 属性和方法
- Using GNU C __attribute__