程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ 計時函數的使用

c++ 計時函數的使用

編輯:C++入門知識

c++ 計時函數的使用


為了測試程序的性能,我們常常需要使用計時函數。在c++中提供了多種實現計時的方式。下面主要說明gettimeofday和clock函數的使用。

gettimeofday獲取的是當前精確時間(1970年1月1日到現在的時間),或者為執行計時,也可以稱之為牆上時間。在程序執行之前獲取一次時間,執行結束之後獲取一次時間,兩次時間之差就是程序真正的執行時間。

而clock為cpu的時間,其中包括用戶代碼,庫函數,系統調用等消耗的時間,但是不包括cpu的空閒時間(進程切換,等待消息消耗的時間)。在多任務的系統中,在涉及到進程切換的時候,clock能獲得某個單一進程在cpu中的執行時間。而gettimeofday只能獲得從程序開始執行到程序執行結束的時間,其中可能包括進程被切換出去的時間。

兩個函數的具體用法如下:

#include
#include
#include 
#include

using namespace std;

struct timeval start1,end1;
clock_t begin, finish;

int main()
{
	gettimeofday(&start1,NULL); 
	begin = clock() ;                 //開始計時
	int sum = 0;
	for(int i=0;i<1000000000;i++)
	{
		sum += i;
	}  
	cout << sum << endl;
	gettimeofday(&end1,NULL);
	finish = clock();                        //結束計時
	double timeUse = end1.tv_sec - start1.tv_sec + (end1.tv_usec - start1.tv_usec)/1000000.0;
	cout << "the time of gettimeofday is " << timeUse << endl;            //打印結果
	timeUse = (double)(finish - begin) / CLOCKS_PER_SEC;
	cout << "the time of clock is " << timeUse << endl;            //打印結果
	return 0;
}

執行結果

xiang@xiang:~/workspace/system_lib$ ./time
-1243309312
the time of gettimeofday is 3.09654
the time of clock is 2.92
明顯看出gettimeofday的時間長於clock的時間,其中可能就包括了程序被切換出去的而等待的時間。

在並行程序記錄時間的時候,為了獲取從程序開始到程序運行結束的時間一般使用gettimeofday.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved