看板Programming
标 题Re: [问题] 追求效能下,在Do Loop下用IF叙述?
发信站交大资讯次世代BS2 (Tue Mar 11 22:13:08 2008)
转信站ptt!ctu-reader!ctu-peer!news.nctu!csnews.cs.nctu!news.cs.nctu!BS2
※ 引述《[email protected] (打倒万恶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