Re: [問題] 程式最佳化

看板C_and_CPP (C/C++)作者 (雲飛(想出去玩))時間16年前 (2009/03/27 21:06), 編輯推噓3(304)
留言7則, 6人參與, 最新討論串3/4 (看更多)
※ 引述《Killercat (殺人貓™)》之銘言: : ※ 引述《dcgkii ()》之銘言: : : 有沒有書籍或網站是專門在講 : : 程式的最佳化啊? : : 就是可以使編譯後的組語更快? : 最佳化來講 "我們能做的"大概就是只有thread opt跟openMP而以了 : 剩下的不是要_asm就是要交給編譯器來做 : 有幾個最佳化的點我可以聊一下 : 1. 良好的寫作習慣 : 能++n就不要n++ 能+=就不要+ : 能一次迴圈內做完的就不要分兩個迴圈(不過這個在最佳化有不少例外) : 2. 利用一些third party library : 比方說Intel出的IPP/MKL(恩 效能要用錢來換) : 3. 買很棒的IDE並且遵照他的作法 : 又是Intel, IC(Intel Compiler) : 4. OpenMP : 這個是你可以google的東西,在很多IDE上都有支援 : 效能增加非常可觀 : 5. Thread opt : 這是一個很複雜的議題,thread本身是有最佳化解法的 : 市面上也有些現成的(恩 也有要錢的)library : 比方說TBB(有免費版本的OpenTBB, http://www.threadingbuildingblocks.org/ ) : Boost本身也有thread pool manager,openMP3.0的task manager : 原理的話就自己google了,其實除了1以外 : 大多數都是把很多個相同的算式合在一次運算裡面做掉以避免浪費 6. 盡量用三元運算式 e1?e2:e3 代替 if else 7. 盡量不要用動態記憶體配置寫法 malloc() 8. 盡量用 Bitwise Logical Operator (>>,<<,^,|,&,~) ps: 乘法可用<< , 除法可用 >> 9. 盡量不要用 / 或 % 運算 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.129.63 ※ 編輯: uefang 來自: 123.110.129.63 (03/27 21:07) ※ 編輯: uefang 來自: 123.110.129.63 (03/27 21:08)

03/27 22:06, , 1F
不用malloc 那怎麼寫程式@@
03/27 22:06, 1F

03/27 22:10, , 2F
new ?
03/27 22:10, 2F

03/27 23:29, , 3F
自己測時,三元運算子好像比if else慢耶@@
03/27 23:29, 3F

03/27 23:45, , 4F
另外推一個, 能用整數算/存的就不要用浮點數來算/存@_@"
03/27 23:45, 4F

03/28 02:20, , 5F
可以用alloca 或一些stack based 的container
03/28 02:20, 5F

03/28 02:21, , 6F
然後有些時候寫C是沒有C standard library 可以用的.
03/28 02:21, 6F

03/31 01:13, , 7F
.............沒有一個是正確的觀念。
03/31 01:13, 7F
文章代碼(AID): #19pCzj8c (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 4 篇):
4
8
文章代碼(AID): #19pCzj8c (C_and_CPP)