Re: [問題] 追求效能下,在Do Loop下用IF敘述?
※ 引述《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 不夠力的時候
查表法是非常常用的手段
> 感謝解答!!
--
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw>
█▄▄▄▄█ █ ▄▄▄▄▄█ Player: kisaraki
▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: 220-141-20-175.dynamic.hine
☆ 次世代BS2 ☆ 可申請個人板 150MB 相簿 http://pic.bs2.to 交大資訊人 250MB
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 10 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章