2013-04-10 35 views
0

我需要做到以下幾點:如何測量C++中的內存分配時間?

  1. 寫三種功能於C++
  2. 一個函數聲明瞭一個大陣靜
  3. 一個函數聲明上的一摞
  4. 和最後一個函數相同Array創建從堆同一陣列
  5. 每個子程序必須調用了大量的時間(100,000)
  6. 輸出由每個
  7. 012所需的時間

這裏是我的代碼:

用戶環境

#include <time.h> 
#include <iostream> 
using namespace std; 

void func1(); 
void func2(); 
void func3(); 

int main() 
{ 

    for (i = 0; i < 100000; i++) 
    { 
     func1(); 
     func2(); 
     func3(); 
    } 
} 

實現

void func1() 
{ 
    int static my_array[1000]; 
} 

void func2() 
{ 
    int my_array[1000]; 
} 

void func3() 
{ 
    new int my_array[1000]; 
} 

問題:

  • 我是在Main還是在每個函數中創建數組(就像我所做的那樣)?
  • 我可以在主體或每個功能中找到時間嗎?
  • 是時間()還是時鐘()?
  • 我是否必須將Time()保存到變量?
  • 我做了什麼錯誤以及如何解決?
+0

這將是時鐘()。我知道。你需要將呼叫的開始保存到一個變量中。 'float start_time = clock()/ CLOCKS_PER_SEC;',就在for循環之前。 'float end time = clock()/ CLOCKS_PER_SEC;'會在for循環之後。和'cout << start_time - end_time << endl;'或'printf(「Time taken:%f s。」,start_time - end_time);'打印輸出。 – 2013-04-10 19:45:02

+3

你問的問題可以由你的老師或T.A.回答更好。給你分配了這個問題。 – quandrei 2013-04-10 19:47:53

回答

2

a)您可以像在示例中提到的那樣在函數內部創建數組,以便確定每個函數花費多少時間爲數組分配內存。

b)您需要確定每次函數調用之間所花費的時間。其他明智的是什麼在每個循環中確定的重點。

您可以使用它來確定以毫秒爲單位的時間差。

typedef std::chrono::high_resolution_clock Clock; 
     typedef std::chrono::milliseconds milliseconds; 
     Clock::time_point t0 = Clock::now(); 
     fun1(); //function call 
     Clock::time_point t1 = Clock::now(); 
     milliseconds ms = std::chrono::duration_cast<milliseconds>(t1 - t0); 
     std::cout << ms.count() << "ms\n"; 

同樣,您可以確定剩餘的函數調用需要多少時間。