作者OASYS (打倒万恶ETS)
看板Programming
标题Re: [问题] 追求效能下,在Do Loop下用IF叙述?
时间Wed Mar 12 09:45:47 2008
演算法的部份,小弟已经尽量优化了,有时觉得要写科学计算程式不若写商用软体
程式码已经快精简到像密码一样只有我看得懂...(可能过一两个月连我也要想半天
才会看得懂..XD),小弟尚有平行化处理..甚至把程式放到Ramdisk跑都用上了...
为了快一点什麽都做得出来..@@
不知道有没有类似的资讯,书或网页告诉程式设计师写程式的一些观念...
如同样功能的程式用不同的写法之差别...
再次感谢各位大大的解答..
※ 引述《[email protected] (镇远管带)》之铭言:
: ※ 引述《[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 不够力的时候
: 查表法是非常常用的手段
: > 感谢解答!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.31.143