[問題] 某段程式執行速度問題

看板C_and_CPP (C/C++)作者 (阿通)時間13年前 (2013/03/06 01:18), 編輯推噓1(1013)
留言14則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV 2.1 問題(Question): 小弟在撰寫一個影像處理的程式(下面有程式碼網址), 簡單來看其實就是許多的迴圈運算, 就在計算這整個回圈的執行時間時,碰到了奇怪的問題, 假如我將程式碼的第72行~第81行註解掉,那麼整體做完只需花了9ms, 而沒註解掉則需花37ms,多了這幾行的確會增加時間, 但判斷式裡面的運算量相較於上面的其他迴圈來說應該算小了? 而且符合if條件式情況只有11個左右,想請問會多花到這麼時間嗎? 小弟卡關已久,還請各位版上有經驗的各位可以提供我一些建議,感謝。 程式碼(Code):(請善用置底文網頁, 記得排版) 部分程式碼:http://nopaste.info/83d3103f4b.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.80.236 ※ 編輯: b9707114 來自: 118.168.80.236 (03/06 01:22)

03/06 09:41, , 1F
這裡面最花時間的應該是用new配置記憶體
03/06 09:41, 1F

03/06 14:26, , 2F
剛剛發現在debug模式下時間是一樣的,在release才會這樣
03/06 14:26, 2F

03/06 14:27, , 3F
但目前願算速度不能用DEBUG的速度,這樣release下要怎麼
03/06 14:27, 3F

03/06 14:27, , 4F
修改會比較好呢?
03/06 14:27, 4F

03/06 14:29, , 5F
object pool
03/06 14:29, 5F

03/06 16:28, , 6F
不知道Release他是怎麼最佳化,為什麼多個判斷式差這麼多
03/06 16:28, 6F

03/06 19:19, , 7F
如果想知道做了什麼,最簡單就是開 Disassembly 來看。
03/06 19:19, 7F

03/06 21:25, , 8F
Express版有嗎? 我今天找不太到
03/06 21:25, 8F

03/06 23:07, , 9F
Release比Debug還慢?
03/06 23:07, 9F

03/06 23:46, , 10F
1F正確,struct nowx[100];int k=0; L75 後改為,
03/06 23:46, 10F

03/06 23:46, , 11F
nowx[k].x=i; nowx[k].y=j;k++;
03/06 23:46, 11F

03/07 03:33, , 12F
先下中斷點,當停在中斷點的時候按 Alt + 8 (左邊一排的8)
03/07 03:33, 12F

03/07 03:34, , 13F
右鍵選單可以勾選顯示 source code
03/07 03:34, 13F

03/08 17:58, , 14F
可以看到組語了,謝L大,希望可以了解他怎麼最佳化的。
03/08 17:58, 14F
文章代碼(AID): #1HDYZnBr (C_and_CPP)
文章代碼(AID): #1HDYZnBr (C_and_CPP)