作者OASYS (打倒萬惡ETS)
看板Programming
標題[問題] 追求效能下,在Do Loop下用IF敘述?
時間Tue Mar 11 11:31:20 2008
問一個小弟想很久的問題,因為在雜誌上面看到CPU的運作原理,小弟寫科學計算的程式
一跑通常要近月,也因此要常常斤斤計較程式的效能,哪怕能快個一個小時也好,如
在一個大量回圈(1~1E8)裡要重複Call一個副程式,這個副程式裡面又有一些IF的敘述
是用來區別參數的使用情況,如IF I0<A就用F_A參數,IF I0>A就用F_B參數
,現在小弟的想法是,這些IF的敘述會不會對CPU的分歧預測造成影響呢?
如果我把這個敘述改寫成陣列如F(I0).只要前面A個參數都是F_A,其餘則是F_B
,直接把這個陣列帶入計算裡,省去所有的IF敘述,這樣會不會比較快呢?...
感謝解答!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.31.143
推 brighton16:table-driven design有效,越複雜的情 122.122.88.235 03/11 11:44
→ brighton16:況改善越明顯 122.122.88.235 03/11 11:45
→ OASYS:所以IF敘述越少對程式的效能越有幫助囉?? 124.218.86.239 03/11 22:30
→ OASYS:感謝解答!! 124.218.86.239 03/11 22:34