推 joefaq:release mode 迴圈應該會被移除喔 05/10 22:19
推 VictorTom:推1F, 另外, 改用QueryPerformanceCounter試試:) 05/10 22:24
→ VictorTom:不然最後再加一個dummy的code去印一下sum; 雖然說迴圈那 05/10 22:25
→ loveme00835:請問一下迴圈為什麼會被移掉呢? 05/10 22:26
→ VictorTom:段還是可能被optimize掉, 那就只好換sum+=rand();之類XD 05/10 22:26
→ VictorTom:迴圈在算sum, sum後面卻沒用到, index i j也都沒用到, 05/10 22:27
→ VictorTom:整段迴圈都可以被dead code remove掉:) 05/10 22:27
→ loveme00835:原來最佳化會做成這種程度@@ 05/10 22:29
→ iversonjimmy:慘了...我有點聽不懂耶 @@ 05/10 22:33
推 VictorTom:對了, 先改用 %f 印 (double)(end-begin)/CLK_TCK 試試. 05/10 22:37
→ VictorTom:不行就查查看 QueryPerformanceCounter() 05/10 22:38
→ VictorTom:簡單說, 值都一樣有幾種可能, 1. 跑太快了一值算出0. 05/10 22:38
→ VictorTom:2. 差異太小clock()計不到這麼精確; 3. 算出來都是同樣 05/10 22:39
→ VictorTom:的整數的情況, 就是計算誤差, 即上面說改%f那行.... 05/10 22:39
推 outshaker:begin end 資料型別要用t_time,為long。 05/10 22:52
→ james732:因為你的程式裡,那個迴圈對其他部份可說沒有影響 05/10 22:55
→ james732:最佳化的時候會發現這段程式碼沒有意義 因此省掉 05/10 22:55
→ loveme00835:嗯嗯,原本以為只會對array index跟計算上做最佳化而已 05/10 22:58
→ james732:現在的compiler已經做到很恐怖的地步了...XD 05/10 23:00
推 VictorTom:推可以做的可多了呢XD 05/10 23:01
→ iversonjimmy:哈哈,謝謝樓上高手們的解答,compiler太過於強大... 05/10 23:13
→ james732:請記得這種時間相關的,不要用迴圈來做 05/10 23:14
→ james732:利用OS所提供的函式(如推文的QueryPerformanceCounter) 05/10 23:14
→ iversonjimmy:QueryPerformanceCounter它是用在C嗎?還是C++ ?? 05/10 23:43
→ iversonjimmy:我剛剛有稍微查一下,怎好像都關於C++的... 05/10 23:44
推 VictorTom:它是Win32 API, #include <windows.h> 可用; 使用上也沒 05/10 23:51
→ VictorTom:有哪邊有需要C++ OO或獨特語法的部份.... 05/10 23:51
→ iversonjimmy:的確沒有oo的語法,可能是我過去沒碰過吧,抱歉... 05/11 02:44