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

看板Programming作者時間16年前 (2008/03/11 18:32), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/10 (看更多)
> ==>發信人: OASYS.bbs@ptt.cc (打倒萬惡ETS), 信區: programming > 問一個小弟想很久的問題,因為在雜誌上面看到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敘述,這樣會不會比較快呢?... > 感謝解答!! 當然會, 試了不就知道 ? branch prediction 跟 instruction fetch pipeline 有關, IF 之後還會有個 goto , 套得遠一點就可能讓 fetch pipeline 斷了清掉重來. -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234

03/11 22:34, , 1F
感謝解答!!
03/11 22:34, 1F
文章代碼(AID): #17rb-b00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #17rb-b00 (Programming)