一,返回单位为毫秒
#include<windows.h>
DWORD dwStart = GetTickCount();
// 测试代码
DWORD dwTime = GetTickCount() - dwStart;
注意:GetTickCount()精确度有限,跟CPU有关,一般精确度在16ms左右,最精确也不会精确过10ms,这就是说如果你的时间间隔在16ms以内的话,两个时间相减为0,如果大于16ms且小于32ms的话,两个时间相减为16ms(也不完全严格,有的时候会是15或者17,根据当时CPU的处理情况而定)。其实也就是说你得到的这个差是实际时间间隔除以16(具体是几取决于你机器的处理能力,但是不会小于10),把余数舍弃。
二,返回时间为秒
#include<time.h>
unsigned long start,stop;
start=time(NULL); //取值为秒
//你的程序
stop=time(NULL);
printf("运行时间:%ld",stop-start);
三,精确计时法
QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位
计时.但是 QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必
须 要 查 询 系 统 以 得 到 QueryPerformanceCounter() 返 回 的 嘀 哒 声 的 频
率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.计算确切的时
间是从第一次调用 QueryPerformanceCounter()开始的
使用 window 操作系统本身提供的 API 接口,程序如下:
#include<windows.h>
LARGE_INTEGER Freq; LARGE_INTEGER start; LARGE_INTEGER end;
QueryPerformanceFrequency(&Freq); // 获取时钟周期
QueryPerformanceCounter(&start); // 获取时钟计数
你的程序
QueryPerformanceCounter(&end);
/*此处*1000,以毫秒为单位;*1000000 以微秒为单位*/
/*由于执行时间极短(可能是几微秒),所以采用微秒为单位*/
printf("%d",(end.QuadPart-start.QuadPart)*1000000/Freq.QuadPart);
注意:1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)=10^12ps(皮秒)=10^15fs(飞秒)=10^18as(阿秒)=10^21zm(仄秒)=10^24ym(幺秒)
例子:
#include <stdio.h>
#include<windows.h>
int main()
{
LARGE_INTEGER Freq; //64位有符号整数值.
LARGE_INTEGER start;
LARGE_INTEGER end;
QueryPerformanceFrequency(&Freq); // 获取时钟周期 “1次/秒”,记做Hz(赫兹)。1Hz就是每秒一次
QueryPerformanceCounter(&start); // 获取时钟计数
Sleep(1000);//毫秒为单位
QueryPerformanceCounter(&end);
/*此处*1000,以毫秒为单位;*1000000 以微秒为单位*/
/*由于执行时间极短(可能是几微秒),所以采用微秒为单位*/
/* 1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒) */
printf("%d",(end.QuadPart-start.QuadPart)*1000/Freq.QuadPart);
return 0;
}
四,如果是在linux平台下面呢?
时间的测量有多种方式。一种是C语言库函数 time(),它可以提供秒级的计时,比较粗糙。
一种是C语言库函数gettimeofday(),大约可以精确到微妙,但会受到CPU调度的影响。
一种是时间戳计时器(Time Stamp Counter),可以达到纳秒级计时精度。
1)time 命令
— 执行命令并计时
time find . -name "*.c" |xargs wc -l // 统计执行命令时间
real 0m33.748s
user 0m0.772s
sys 0m1.044s
(1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;
(2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
(3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。
其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。
另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。
2)微秒级测量方法
struct timeval
{
long tv_sec; //秒域
long tv_usec; //微妙域
}
(tvend.tv_sec-tvstart.tv_sec)+(tvend.tv_usec-tvstart.tv_usec)/1000000 = 以秒为单位的计时时间。
以下得到以微秒为计时单位的时间
#include <sys/time.h>
#include "stdio.h"
int main()
{
struct timeval tstart,tend;
gettimeofday(&tstart,NULL);
for(int i=0;i<10000;++i)
printf("");
gettimeofday(&tend,NULL);
long int use_useconds=1000000*(tend.tv_sec - tstart.tv_sec) + (tend.tv_usec - tstart.tv_usec);
printf("%ld\n",use_useconds);
return 0;
}
分享到:
相关推荐
wine,可以在linux运行window程序,但是支持的软件不是非常多,不是非常好,但是一些基本常用的还是可以的,甚至一些单机游戏都可以运行....
java加密运行支持【spring+struts+mybatis+hibernate+mysql+oracle+sqlserver+postgresql+springMVC+springboot】 支持的项目:JavaWeb项目、Tomcat项目、SpringBoot项目、单独的Jar包项目、几乎所有的Java项目都...
Linux拥有丰富各种源代码资源,但是大部分...本文将以一个实际的例子(Tar)来说明如何把Linux代码移植到 Windows平台上。移植过程将尽量少修改代码,以便代码的运行逻辑不会发生任何变动。保留绝大部分软件主要功能。
使用最新比较新的代码编译的,功能强大, 解压即可用 window/linux通用
java代码利用Jsch实现在windows平台获取linux服务器文件,已包含 jsch jar包
Linux/window下怎样查看某个端口被哪个程序/进程占用,接下来详细介绍如何查看占用端口的程序,有需要的朋友可以参考下
首先执行根目录下的sql,然后在CloudSystem\WEB-INF\classes下在address.properties修改文件存法的路径(linux例如/usr/local,Window如E:\\temp1122) 然后在dbconfig下修改你的 数据库 连接,然后大功告成了!打开 ...
GO官网上最新的环境安装包15.6,下载包里包括Windows系统,Linux系统和Mac OS系统三个系统的最新Go安装包
里面有7个文档,2个文件。里面是本人运用实施到项目tomcat在window和linux系统下的经验和总结。里面有具体的步骤和出现问题时改怎么处理的实战方法,所以分数放的较高,请大家积极下载,无忧所值哦。
Notepad- 是使用C++编写的轻量级文本编辑器, 简称ndd, 可以支持Window/Mac/Linux操作系统平台
window64系统redis安装文件 Redis-x64-3.2.100.msi ,linux redis安装文件redis-5.0.0.tar.gz
window linux 操作系统的区别
以前做的一个linux/windows下一个字符串类CString的实现 文件主要将windows下的MFC、WTL中的CString的实现移植到了linux下。 没有经过很严格的测试,有兴趣的可以多做一下。
大华视频 ios/window/安卓 抓包工具及使用方法。大华视频 ios/window/安卓 抓包工具及使用方法。
在window环境下运行Linux命令。下载解压后打开文件夹中的cmd.exe 即可
但 Linux 2.2.x的 frame buffer设备可通过 VESA VBE 2.0标准利用显卡的 Super VGA特性,然后配合 XFree86的 frame buffer Server(XF86_FBDev) 就可让你的 XWindow用高分辨率和高/真彩。现在市面上绝大部分新出的...
linux平台、window平台通用压缩文件解压,可解压含中文压缩包。
android环境搭建(window和linux) android环境搭建(window和linux)
一个Smtp发邮件的类 可以直接使用 非常好用 支持window/linux VC6.0编译通过