windows 高精度时间获取

7 篇文章 0 订阅
2 篇文章 0 订阅

//不好意思,困了,懒得解释了

//头文件File:TimeTool.h

#ifndef TIMETOOL_H_INCLUDED
#define TIMETOOL_H_INCLUDED

#include <windows.h>

typedef struct PfmTest
{
 LARGE_INTEGER liStart;
 LARGE_INTEGER liEnd;
 LARGE_INTEGER liPerfFreq;
}PfmTest;

/**
 * 
 *@case
 void main()
 {
  printf("开始\n");
  InitPfmTime();

  BeginPfmTime();
  for(int i = 0; i < 10000; ++i);
  double timeInterval = EndPfmTime();
  printf("结束,总用时:%f\n", timeInterval);

  BeginPfmTime();
  for(int i = 0; i < 500; ++i);
  double timeInterval = EndPfmTime();
  printf("结束,总用时:%f\n", timeInterval);

 }
 */
void InitPfmTime();
void BeginPfmTime();
/**
 *@return double 自上次调用BeginPfmTime()到本函数之间的时间间隔,单位为 秒(s).
 */
double EndPfmTime();

/**
 * 
 *@case
 void main()
 {
  printf("开始\n");
  LARGE_INTEGER temp;
  InitPfmTimeWithArg(&temp);
  
  BeginPfmTimeWithArg(&temp);
  for(int i = 0; i < 10000; ++i);
  double timeInterval = EndPfmTimeWithArg(&temp);
  printf("结束,总用时:%f\n", timeInterval);

  BeginPfmTimeWithArg(&temp);
  for(int i = 0; i < 500; ++i);
  double timeInterval = EndPfmTimeWithArg(&temp);
  printf("结束,总用时:%f\n", timeInterval);

 }
 */
void InitPfmTimeWithArg(PfmTest * pfmTest);
void BeginPfmTimeWithArg(PfmTest * pfmTest);
double EndPfmTimeWithArg(PfmTest * pfmTest);

#endif //TIMETOOL_H_INCLUDED

 

 

 

//源文件File:TimeTool.cpp

#include "TimeTool.h"

static PfmTest pfmTest;

void InitPfmTime()
{
 QueryPerformanceFrequency(&(pfmTest.liPerfFreq));
}
void BeginPfmTime()
{
 QueryPerformanceCounter(&(pfmTest.liStart));
}
double EndPfmTime()
{
 QueryPerformanceCounter(&(pfmTest.liEnd)); 
 double timeSecond = (double)(pfmTest.liEnd.QuadPart - pfmTest.liStart.QuadPart) / (double)(pfmTest.liPerfFreq.QuadPart);
 return timeSecond;
}

void InitPfmTimeWithArg(PfmTest * pfmTest)
{
 QueryPerformanceFrequency(&(pfmTest->liPerfFreq));
}
void BeginPfmTimeWithArg(PfmTest * pfmTest)
{
 QueryPerformanceCounter(&(pfmTest->liStart));
}

double EndPfmTimeWithArg(PfmTest * pfmTest)
{
 QueryPerformanceCounter(&(pfmTest->liEnd)); 
 double timeSecond = (double)(pfmTest->liEnd.QuadPart - pfmTest->liStart.QuadPart) / (double)(pfmTest->liPerfFreq.QuadPart);
 return timeSecond;
}

 

//测试文件File:App.cpp

#include <stdlib.h>

#include <stdio.h>

#include  "TimeTool.h"

 void main()
 {
  printf("开始\n");
  LARGE_INTEGER temp;
  InitPfmTimeWithArg(&temp);
  
  BeginPfmTimeWithArg(&temp);
  for(int i = 0; i < 10000; ++i);
  double timeInterval = EndPfmTimeWithArg(&temp);
  printf("结束,总用时:%f\n", timeInterval);

  BeginPfmTimeWithArg(&temp);
  for(int i = 0; i < 500; ++i);
  double timeInterval = EndPfmTimeWithArg(&temp);
  printf("结束,总用时:%f\n", timeInterval);

  printf("开始\n");
  InitPfmTime();

  BeginPfmTime();
  for(int i = 0; i < 10000; ++i);
  double timeInterval = EndPfmTime();
  printf("结束,总用时:%f\n", timeInterval);

  BeginPfmTime();
  for(int i = 0; i < 500; ++i);
  double timeInterval = EndPfmTime();
  printf("结束,总用时:%f\n", timeInterval);

 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值