看板Programming
标 题Re: [问题] 追求效能下,在Do Loop下用IF叙述?
发信站中央大学松涛风情资讯站 (Tue Mar 11 18:08:33 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.csie.ncu!Evergreen
> ==>发信人: [email protected] (打倒万恶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
1F:→ OASYS:感谢解答!! 124.218.86.239 03/11 22:34