C语言实现高精度计时和高精度延时微秒级别  目的说明 环境说明 一、高精度延时(微秒级别) 二、测试例程 三、测试结果   
 
在Windows下C语言实现高精度计时功能和高精度延时微秒级别
Dev- C++  V5. 11 
 
   
void  vDelayUS ( u32 usDelay) 
{ LARGE_INTEGER startTick =  { 0 } ,  curTick =  { 0 } ,  countFQR =  { 0 } ; u64 delayTick =  0 ; QueryPerformanceFrequency ( & countFQR) ;  delayTick =  ( countFQR. QuadPart *  usDelay)  /  1000000 ;  QueryPerformanceCounter ( & startTick) ;   while  ( 1 ) { QueryPerformanceCounter ( & curTick) ;   if  ( ( ( u64) ( curTick. QuadPart -  startTick. QuadPart) )  >=  delayTick) { break ; } } 
} 
   
# include  <stdio.h> # include  <stdlib.h> # include  <string.h> # include  <windows.h> int  main ( int  argc,  char  * argv[ ] )  
{ LARGE_INTEGER startTick =  { 0 } ,  endTick =  { 0 } ,  countFQR =  { 0 } ; u64 startCounter =  0 ,  endCounter =  0 ; u64 absTime =  0 ; double  costTime =  0 ; QueryPerformanceFrequency ( & countFQR) ;  QueryPerformanceCounter ( & startTick) ;   vOrgData_Handler ( ) ; QueryPerformanceCounter ( & endTick) ;  startCounter =  startTick. QuadPart *  1000000  /  countFQR. QuadPart;  endCounter   =  endTick. QuadPart   *  1000000  /  countFQR. QuadPart;  printf ( "\r\n\r\n" ) ; printf ( "High Precision Timing Demo:\r\n" ) ; costTime =  ( double ) ( endTick. QuadPart -  startTick. QuadPart)  *  1000000.0  /  countFQR. QuadPart; printf ( "countFQR:%lldHZ  start:%lld  end:%lld  CostTimes:%0.3fus\r\n" ,  countFQR,  startTick. QuadPart,  endTick. QuadPart,  costTime) ; printf ( "startCounter:%lld  endCounter:%lld  CostTimes:%uus\r\n" ,  startCounter,  endCounter,  ( endCounter -  startCounter) ) ; QueryPerformanceCounter ( & startTick) ; vDelayUS ( 200000 ) ; QueryPerformanceCounter ( & endTick) ; printf ( "\r\n\r\n" ) ; printf ( "High Precision Delay Demo:\r\n" ) ; absTime =  ( endTick. QuadPart -  startTick. QuadPart)  *  1000000  /  countFQR. QuadPart; printf ( "start:%lld  end:%lld  CostTimes:%lldus\r\n\r\n" ,  startTick. QuadPart,  endTick. QuadPart,  absTime) ; printf ( "Compiler Date : %s  %s\r\n" ,  __DATE__ ,  __TIME__ ) ; while ( 1 ) ; return  0 ; 
} 
 
   
High Precision Timing Demo: 
countFQR: 10000000 HZ  start: 430589299158   end: 430589305471   CostTimes: 631.300u s
startCounter: 43058929915   endCounter: 43058930547   CostTimes: 632u sHigh Precision Delay Demo: 
start: 430589306518   end: 430591306519   CostTimes: 200000u sCompiler Date :  Mar 21  2024   20 : 12 : 07