整数除法与浮点数乘法哪个效率高?
很多编程规范中写到“尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。”
但是请问整数除法与浮点数乘法哪个效率高?例如:
int n = 8;
n /= 2;与n *= 0.5;哪个效率更高?
问题点数:20、回复次数:11Top
1 楼Helloooooo(每天,我都新的)回复于 2006-03-05 19:06:52 得分 0
如果被除数是2幂的话,
可能编译器会转换成位运算,
那么效率就高。
其他情况应该都是将除法转换成乘法的。Top
2 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-03-06 10:07:47 得分 0
其他情况应该都是将除法转换成乘法的。
--------------------------------------------------------
这倒是第一次听说, 好像浮点操作比整点操作速度上差几个数量级地, 在木有协处理器的机器上就更别提了.....Top
3 楼wodeyouxian(人生如梦)回复于 2006-03-06 15:28:05 得分 0
最好的办法是你自己找个测试工具实际测试一下Top
4 楼wjd7623054(千古风流)回复于 2006-03-06 17:04:54 得分 10
应该还是整数除法效率比较高吧,本来整数运算就比浮点运算效率高不少,除法转成乘法虽然消耗了部分效率,还是比浮点效率高一点吧Top
5 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-06 21:55:24 得分 0
其他情况应该都是将除法转换成乘法的。
-----------------------------------
恩, 是有这么个转化的 ...
这个有些特殊情况要考虑 ...
比如 编译器的优化 ...
大家都知道 移位要比乘法(*2)快 ,
但是 VC 中测试结果是一样的效率 ..
原因就是 乘法(*2)被优化成了移位 ..
操作都一样了,
效率自然一样 ...Top
6 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-06 21:57:27 得分 10
请问整数除法与浮点数乘法哪个效率高?
-----------------
直觉上,
整数怎么都比浮点来的快 ...Top
7 楼t_jl1979(骑士)回复于 2006-03-06 23:38:13 得分 0
整数啊,这个没什么可争议的.Top
8 楼deutsch(人民)回复于 2006-03-06 23:40:25 得分 0
转换为汇编看指令的执行周期Top
9 楼wjd7623054(千古风流)回复于 2006-03-07 08:34:16 得分 0
嗯,还是应该看肯汇编Top
10 楼wqtl_357(Step By Step!)回复于 2006-03-08 10:13:18 得分 0
还是用整数吧,那样会好看些Top
11 楼cuibo1123(月满C楼)回复于 2006-03-08 14:05:24 得分 0
看汇编吧~~ 就知道了~Top




