測試C++程式執行的時間
阿新 • • 發佈:2018-12-26
參加一個公司的筆試,給了兩個題目,時間要求是越快越好,這時候就要求我們在編寫程式之後測試程式所需的時間,儘量做到最小。
在C++中計算執行的時間是呼叫clock函式,使用clock函式獲得程式開始和結束所需的時間,相減就得到程式所花的時間。
clock()是C/C++中的計時函式,而與其相關的資料型別是clock_t。在MSDN中,查得對clock函式定義如下:
clock_t clock(void) ;
簡單而言,就是該程式從啟動到函式呼叫佔用CPU的時間。這個函式返回從“開啟這個程式程序”到“程式中呼叫clock()函式”時之間的CPU時鐘計時單元(clock tick)數,在MSDN中
稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。其中clock_t是用來儲存時間的資料型別。
#include<iostream> #include<ctime> using namespace std; int main() { clock_t start,finish; start=clock(); cout << "HW .... " << endl; finish=clock(); cout << finish-start << "/" << CLOCKS_PER_SEC << " (s) "<< endl; return 0; }
再測試一個複雜一點的程式
#include<iostream> #include<ctime> using namespace std; int main() { clock_t start,finish; start=clock(); cout << "HW .... " << endl; int k; int Joseph[14]; //記錄表,將下標為k對應的m的值記錄下來,避免重複計算 memset(Joseph,0,sizeof(Joseph)); while(cin>>k&&k){ int n = 2*k; if(Joseph[k]){ cout<<Joseph[k]<<endl; } else{ for(int m=1;;m++){ int result = 0; for(int i=1;i<=k;i++){ //用i表示第幾輪 result = (result+m-1)%(n-i+1); if(result<k) break; } if(result>=k){ Joseph[k] = m; //找到符合條件的值,就更新記錄表 cout<<m<<endl; break; } } } } finish=clock(); cout << finish-start << "/" << CLOCKS_PER_SEC << " (s) "<< endl; return 0; }