以下提供几种方案,主要是针对c语言
1.windows的api,GetSystemTime (别说.c的程序没法引用api哟)。
typedef struct _SYSTEMTIME {
WORD ;
WORD ;
WORD ;
WORD ;
WORD ;
WORD ;
WORD ;
WORD ;
} SYSTEMTIME,
*PSYSTEMTIME;
2._ftime64 【注意,这个只有vs2003以上才能编译,vc 6不知道long long,故无法编译通过】
msdn例子:
#include <stdio.h>
#include <sys/timeb.h>
#include <time.h>
int main( void )
{
struct __timeb64 timebuffer;
char *timeline;
_ftime64( &timebuffer );
timeline = _ctime64( & ( timebuffer.time ) );
printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] );
}
其他方法:
在IA32体系结构中,CPU内部有一个被称为“时间戳(TimeStamp)”的64位无符号数计数器,存储自cpu上电以来所经过的时钟周期数。
有两种方法:
1:WIN32中有一个QueryPerformanceCouter函数读取的就是一个64位的计数器
2:使用CPUID和RDTSC汇编指令
{dy}种方法就不写了,楼主可以参考msdn,第二种方法的代码如下:
#include<stdio.h>
int main()
{
unsigned int cycle,i;
__asm
{
CPUID
RDTSC
mov cycle,eax
}
for(i=0;i<10000;i++)
;
__asm
{
CPUID
RDTSC
sub eax,cycle
mov cycle,eax
}
printf("the program duration cycle = %d ",cycle);
return 0;
}
4.linux下用
gettimeofday