性能 – 我应该使用乘法还是除法?

这是一个很有趣的问题:

让我们说,我们必须执行一个简单的操作,其中我们需要变量的一半值。通常有两种方法:

y = x / 2.0;
// or...
y = x * 0.5;

假设我们使用语言提供的标准运算符,哪一个具有更好的性能?

我猜,乘法通常更好,所以我试着坚持,当我编码,但我想确认这一点。

虽然个人我对Python 2.4-2.5的答案感兴趣,随时为其他语言发布一个答案!如果你愿意,随时可以发布其他鸽友的方式(例如使用按位移位运算符)。

蟒蛇:

time python -c 'for i in xrange(int(1e8)): t=12341234234.234 / 2.0'
real    0m26.676s
user    0m25.154s
sys     0m0.076s

time python -c 'for i in xrange(int(1e8)): t=12341234234.234 * 0.5'
real    0m17.932s
user    0m16.481s
sys     0m0.048s

乘法速度快33%

Lua:

time lua -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real    0m7.956s
user    0m7.332s
sys     0m0.032s

time lua -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real    0m7.997s
user    0m7.516s
sys     0m0.036s

=>没有真正的区别

LuaJIT:

time luajit -O -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real    0m1.921s
user    0m1.668s
sys     0m0.004s

time luajit -O -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real    0m1.843s
user    0m1.676s
sys     0m0.000s

=>它只有5%更快

结论:在Python中,乘法比除法更快,但随着使用更先进的VM或JIT更接近CPU,优势消失了。很有可能,未来的Python虚拟机会使它不相关

http://stackoverflow.com/questions/226465/should-i-use-multiplication-or-division

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:性能 – 我应该使用乘法还是除法?