C++ 计时

我这里主要说的计时器。因为我有时候要测试一下模块性能,所以需要计时。
这里主要说三种:

  1. clock_t
    当对于精度要求不高时,使用clock_t。这种方法是毫秒级。使用方法:

    #include <time.h>
    #include <iostream>
    
    int main(){
    	clock_t start = clock();
    	Sleep(1000);
    	clock_t end = clock();
    	
    	int time = end - start;
    	cout << "Time cost: " << time << endl; //输出1000
    	return 0;
    

    clock()函数获取当前时间,这样相减就可以得到耗时数据。

  2. QueryPerformanceFrequencyQueryPerformanceCounter
    这是windows下的精确时间获取。它需要硬件支持高精度计时器。使用方法:

    #include <windows.h>
    #include <iostream>
    
    int main(){
    	LARGE_INTEGER freq;
     	LARGE_INTEGER start;
     	LARGE_INTEGER end; 
     	QueryPerformanceFrequency(&freq);
     	
     	QueryPerformanceCounter(&start);  
     	Sleep(1000); 
     	QueryPerformanceCounter(&end);
     	
    	double time = (double)(end.QuadPart - start.QuadPart) / (double)freq.QuadPart;
    	cout << " Time cost: " << time << endl;
    	return 0;
    }
    

    这里需要注意的是这里的time是以秒为单位的。所以毫秒级的数据需要×1000,微秒级需要×1,000,000。
    (这里需要注意的是……windows.h这个万恶的头文件……include的时候和很多头文件会有顺序问题)

  3. gettimeofday
    这是Linux下微秒级时间的获取方法。使用方法如下:

    #include <sys/time.h>
    #include <unistd.h>
    #include <iostream>
    
    int main(){
    	struct timeval start, end;
    	
    	gettimeofday( &start, NULL );
    	sleep(1);
    	gettimeofday( &end, NULL );
    	
    	long int time = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);
    	cout << "Time cost: " << time << endl;
    	return 0;
    }
    

    注意: Linux下sleep的s是小写的,而且单位是秒。

(如有错漏,还望指摘)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值