开网店装修教程:c语言精确到微妙 GetSystemTimeAsFileTime
来源:百度文库 编辑:中财网 时间:2024/04/30 19:58:24
c语言库函数中的clock()函数只能精确到ms,若想更精确的us,在网络上查了一遍,完整的可行的解决方案繁琐,实在没时间去仔细琢磨。不过找到了一个简洁的方案:调用GetSystemTimeAsFileTime函数,单位是100ns
用法如下:
#include
#include
#include
函数使用方法:(这是排序算法分析用到的)
void start(int n)
{
//分配内存,sqList内存空间为400004个字节,slinklist为800004,注意:保存数据集的副本。
FILETIME beg,end;
long dur;
int dlta[5]={9,6,3,2,1};
int t = 5;
SqList *sq = malloc(sizeof(SqList));
SqList *s = malloc(sizeof(SqList));
SLinkList *sl=malloc(sizeof(SLinkList));
if(sq==NULL||s==NULL||sl==NULL){
exit(0);
} else{
*s=getnum(n,s);
memcpy(sq,s,sizeof(SqList));
GetSystemTimeAsFileTime(&beg);
printf("直接插入排序%d",insert_sort(sq));
GetSystemTimeAsFileTime(&end);
dur = 100*(end.dwLowDateTime-beg.dwLowDateTime);
printf("时间:%ld us\n",dur/1000);
memcpy(sq,s,sizeof(SqList));
printf("冒泡排序%d\n",bubble_sort(sq));
memcpy(sq,s,sizeof(SqList));
printf("堆排序%d\n",heap_sort(sq));
memcpy(sq,s,sizeof(SqList));
printf("归并排序%d\n",merge_sort(sq));
memcpy(sq,s,sizeof(SqList));
printf("快速排序%d\n",quick_sort(sq));
memcpy(sq,s,sizeof(SqList));
printf("希尔排序%d\n",shell_sort(sq,dlta,t));
memcpy(sq,s,sizeof(SqList));
init_table(s,sl);
*sl = table_insert(sl);
memcpy(sq,s,sizeof(SqList));
printf("表插入%d\n",arrange(sl));
free(sq);
free(sl);
free(s);
}
}