[問題] time.h相關問題請教

看板C_and_CPP作者 (月)時間14年前 (2010/10/31 17:36), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 這是一個測試 希望連續allocate deallocate大量的記憶體空間 觀察static stack heap 這三種機制所花的時間 但我不知道為甚麼stack跑出來是零... 程式跑出來的錯誤結果: Total time: 0.000000000000000e+00s Average time: 0.000000000000000e+00s Total time: 0.000000000000000e+00s Average time: 0.000000000000000e+00s Total time: 1.900000000000000e+01s Average time: 1.900000000000000e-05 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) g++ 有問題的code: (請善用置底文標色功能) #include <iostream> #include <iomanip> #include <ctime> using namespace std; #define ARRAY_SIZE 1000000 #define ITERATION_TIMES 1000000 void Static(void) { static int arr[ARRAY_SIZE]; } void Stack(void) { int arr[ARRAY_SIZE]; } void Heap(void) { int *arr = new int[ARRAY_SIZE]; delete []arr; } void (*funcVector[3]) (void) = { Static, Stack, Heap }; int main() { time_t timeStart, timeEnd; long double timeUsed; for(int i = 0 ; i < 3 ; i++) { time(&timeStart); for(int j = 0 ; j < ITERATION_TIMES ; j++) { (*funcVector[i])(); } time(&timeEnd); timeUsed = difftime(timeEnd, timeStart) / ITERATION_TIMES; cout << scientific << setprecision(15); cout << "Total time: " << difftime(timeEnd, timeStart) << "s " << "Average time: " << timeUsed << "s" << endl; } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.68.17

10/31 17:47, , 1F
被編譯器去掉了
10/31 17:47, 1F

10/31 17:48, , 2F
最佳化時不見了吧XD
10/31 17:48, 2F

10/31 17:49, , 3F
stack配置是編譯期做的事 執行期並沒有執行成本
10/31 17:49, 3F

10/31 17:50, , 4F
喔對不起我問題沒說清楚
10/31 17:50, 4F

10/31 17:50, , 5F
後來用clock()去計算時間
10/31 17:50, 5F

10/31 17:51, , 6F
結果是stack:total time: 0.01secavg time: 1e-08sec
10/31 17:51, 6F

10/31 17:52, , 7F
heap:total time: 12.86sec avg time: 1.286e-05sec
10/31 17:52, 7F
文章代碼(AID): #1CpJYi66 (C_and_CPP)