Windows(64位)上的Python 2.7.8(64位)是Ubuntu(64位)上2.7.8(64位)的一半
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows(64位)上的Python 2.7.8(64位)是Ubuntu(64位)上2.7.8(64位)的一半,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1321字,纯文字阅读大概需要2分钟。
内容图文
在Linux上需要1.09171080828秒.
在Windows上需要2.14042000294秒.
基准代码:
import time
def mk_array(num):
return [x for x in xrange(1,num)]
def run():
arr = mk_array(10000000)
x = 0
start = time.time()
x = reduce(lambda x,y: x + y, arr)
done = time.time()
elapsed = done - start
return elapsed
if __name__ == '__main__':
times = [run() for x in xrange(0,100)]
avg = sum(times)/len(times)
print (avg)
我知道GIL会创建或多或少的单线程脚本.
Windows box是我的Hyper-V主机,但是应该足够强大以完全运行单个线程的脚本. 12核2.93Ghz Intel X5670s,72GB ram等
Ubuntu VM具有4核和8GB内存.
两者都运行Python 2.7.8 64位.
为什么Windows速度快一半?
编辑:我已经在0.010593495369秒内放了两个零和linux完成,在0.171899962425秒内放了Windows.谢谢大家,好奇心得到满足.
解决方法:
这是因为在Windows中long的大小,在Windows中,unix中的long是32位,而在Windows中是64位,因此您会更快地遇到Arbitrary-precision_arithmetic问题,这是分配成本更高的问题.
相关问题Why are python’s for loops so non-linear for large inputs
如果仅对xrange进行基准测试,您将看到很大的不同.
Windows使用LLP64的背后原因似乎与32位代码兼容:
Another alternative is the LLP64 model, which maintains compatibility with 32-bit code by leaving both int and long as 32-bit. “LL” refers to the “long long integer” type, which is at least 64 bits on all platforms, including 32-bit environments.
内容总结
以上是互联网集市为您收集整理的Windows(64位)上的Python 2.7.8(64位)是Ubuntu(64位)上2.7.8(64位)的一半全部内容,希望文章能够帮你解决Windows(64位)上的Python 2.7.8(64位)是Ubuntu(64位)上2.7.8(64位)的一半所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。