开网店装修教程: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);
    }
}