3 回答
TA贡献1853条经验 获得超18个赞
蟒蛇:
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%
卢阿:
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 VM很可能会使其变得无关紧要
TA贡献1898条经验 获得超8个赞
我认为这变得太挑剔了,您最好做任何使代码更具可读性的事情。除非您执行该操作数千次(甚至数百万次),否则我怀疑有人会注意到这种差异。
如果您真的必须做出选择,则基准测试是唯一的选择。查找哪些功能给您带来了问题,然后找出功能中出现问题的位置,并修复这些部分。但是,我仍然怀疑单个数学运算(甚至重复多次,多次)是否会引起任何瓶颈。
添加回答
举报