0
我正在使用C++中的clock_t函數進行測試,並且遇到了一個問題。當我編譯時,我在兩個不同的編譯器上進行編譯。我的Windows 7計算機上的Visual Studio(2012)以及稱爲「ranger」的Unix系統上的g ++。當我編譯我的代碼試圖以秒爲單位輸出時間(高達千分之一秒)時,它需要運行不同的排序函數,似乎g ++編譯器完全忽略了我試圖將時間戳記除以1000爲了將其從毫秒轉換爲第二種格式。有什麼建議?在這方面,g ++和Visual Studio的編譯器有區別嗎?g ++輸出和Visual Studio輸出之間的差異。浮點變量
短代碼片段(輸出和我爲師做):
//Select Sort
begin = clock(); //Begin time
selectionSort(array, n);
end = clock(); //End time
d_select = ((float)(end/1000.0) - (float)(begin/1000.0)); //Calculates the time in MS, and converts from MS, to a float second.
//Output data
cout << setprecision(3) << fixed; //Set precision to 3 decimal places, with a fixed output (0's are displayed regardless of rounding)
cout << n << "\t" << d_bubble << "\t" << d_insert << "\t" << d_merge << "\t" << d_quick << "\t"
<< d_select << endl;
Visual Studio的輸出(正確):
n Bubble Insert Merge Quick Select
100000 12.530 1.320 0.000 0.030 2.900
Unix的輸出(錯誤):
n Bubble Insert Merge Quick Select
100000 51600.000 11700.000 30.000 150.000 18170.000
有什麼建議嗎?謝謝!
這樣做,它似乎只給我一個整數答案,所以這需要任何形式的功能不到一秒鐘(這通常會給我一些像546 MS這樣的例子)現在只會給我0.000作爲「結果」,好像它根本沒有時間。是否沒有一種通用的「從時間到數秒的轉換」呼叫,我可以做到? – 2014-10-08 01:12:01
@DavidRutledge:因此轉換爲分區的浮點格式,例如'浮子(端開始)/ CLOCKS_PER_SEC'。 – 2014-10-08 01:14:01
aha!似乎我的浮動轉換沒有按照我想要的方式工作(我只是用CLOCKS_PER_SEC替換了我的代碼中的1000)。然而,用你寫的方式似乎是做到了這一點。非常感謝你!似乎我在今天學到了Unix和Microsoft編譯器的另一個區別。 – 2014-10-08 01:19:07