Re: [問題] 追求效能下,在Do Loop下用IF敘述?

看板Programming作者 (打倒萬惡ETS)時間17年前 (2008/03/12 09:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/10 (看更多)
演算法的部份,小弟已經盡量優化了,有時覺得要寫科學計算程式不若寫商用軟體 程式碼已經快精簡到像密碼一樣只有我看得懂...(可能過一兩個月連我也要想半天 才會看得懂..XD),小弟尚有平行化處理..甚至把程式放到Ramdisk跑都用上了... 為了快一點什麼都做得出來..@@ 不知道有沒有類似的資訊,書或網頁告訴程式設計師寫程式的一些觀念... 如同樣功能的程式用不同的寫法之差別... 再次感謝各位大大的解答.. ※ 引述《kisaraki.bbs@bbs.cs.nctu.edu.tw (鎮遠管帶)》之銘言: : ※ 引述《OASYS.bbs@ptt.cc (打倒萬惡ETS)》之銘言: : > 問一個小弟想很久的問題,因為在雜誌上面看到CPU的運作原理,小弟寫科學計算的程式 : > 一跑通常要近月,也因此要常常斤斤計較程式的效能,哪怕能快個一個小時也好,如 : > 在一個大量回圈(1~1E8)裡要重複Call一個副程式,這個副程式裡面又有一些IF的敘述 : > 是用來區別參數的使用情況,如IF I0<A就用F_A參數,IF I0>A就用F_B參數 : > ,現在小弟的想法是,這些IF的敘述會不會對CPU的分歧預測造成影響呢? : 別擔心 CPU 的問題 : 這個基本上交給編譯器去煩 : 你要擔心的是演算法效率 : > 如果我把這個敘述改寫成陣列如F(I0).只要前面A個參數都是F_A,其餘則是F_B : > ,直接把這個陣列帶入計算裡,省去所有的IF敘述,這樣會不會比較快呢?... : 這樣的想法接近查表法了 : 如果你不計較記憶體的話 : 這個方向確實會讓效率提高很多 : 早期 CPU 或 GPU 不夠力的時候 : 查表法是非常常用的手段 : > 感謝解答!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.31.143
文章代碼(AID): #17rpNCWn (Programming)
討論串 (同標題文章)
文章代碼(AID): #17rpNCWn (Programming)