作者tomex (tomex_ou)
看板C_Sharp
标题[心得]使用Shift移位加快浮点运算
时间Thu Apr 20 16:03:14 2006
电脑处理四则运算时,唯独在除法及浮点运算会比较费力
针对除法,我们可以倒置为乘法,
但对於浮点运算,怎麽办呢?
答案就是把它替代为一个整数再右移位。
例如,一个浮点数 a = 0.1234
如何换算成shift运算(以变数b来代替)呢?
1.a先乘上2^20次方值。
f = 0.1234 * 1024 * 1024 = 129394.28
2.由於shift只能针对整数作运算,四舍五入f值:
i = 129394.28 = 129394
3. i值右移20位,129394 >> 20 即等於 0.1234
所以 a = 0.1234 = 129394 >> 20 = b
我用100万笔模拟运算求运作计算时间,
以P4-1.6 Centrino CPU为例,发现使用b值会比用a值时间节省1倍
而且b值的cpu使用率也大概为a值为2/3而己。
假设你从事数学公式程式写作,shift的技巧不可不知呀!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.78.132.15
1F:推 liunate:呵 Shift真是完全没用过呀... 04/20 16:21
2F:→ HsiaoM:换得了速度 但是丧失了精准度喔~~[不过不care精准度也是ok] 04/20 16:39