Python tricks(6) -- python代码执行的效率
2014-02-15 23:49
330 查看
python作为一个动态语言, 本身学习曲线比较平滑, 效率相比起来会比c++和java低一些. 脚本语言都是运行时编译的, 这个对于效率的影响是非常大的.
我借用参考1的代码, 加了点代码import time
代码很简单, 就是循环10**8次, 二者的区别是, 一个是直接循环, 另外一个是封装成一个main函数, 运行结果如下
封装成函数的要比直接循环会快很多. 我不是很清楚这其中具体的原因, 这里我根据个人的理解, 解释一下, 纯属个人意见.
python运行时编译(JIT), 封装成函数的这个可以整体编译, 解释器可以针对函数作编译后的优化, 直接循环的, 无法作编译后优化, 可能是这个原因导致了二者性能的差异.
python的性能优化方法有很多种, 最简单的方式是用更快的python解释器, python是有多种实现的, 官方提供的是CPython, 此外还有Jython(jvm的实现), IronPython(.Net的实现), pypy(纯python实现的), stackless python等很多种实现.
pypy是一个性能不错的解释器, 相同的例子, 在我的机器上使用pypy的运行结果如下
这个的性能提升还是非常明显的, pypy是大家可以考虑的一个解释器.
水平有限, 欢迎拍砖!
参考
代码执行的效率: http://coolshell.cn/articles/7886.html
pypy: http://pypy.org/
我借用参考1的代码, 加了点代码import time
import time class Timer(object): def __init__(self): pass def __enter__(self): self.start = time.time() def __exit__(self, exception_type, exception_val, trace): print "elapsed:", time.time() - self.start # case 1 def main(): for _ in xrange(10 ** 8): pass with Timer(): main() # case 2 with Timer(): for _ in xrange(10 ** 8): pass
代码很简单, 就是循环10**8次, 二者的区别是, 一个是直接循环, 另外一个是封装成一个main函数, 运行结果如下
elapsed: 3.53965115547 elapsed: 5.47090697289
封装成函数的要比直接循环会快很多. 我不是很清楚这其中具体的原因, 这里我根据个人的理解, 解释一下, 纯属个人意见.
python运行时编译(JIT), 封装成函数的这个可以整体编译, 解释器可以针对函数作编译后的优化, 直接循环的, 无法作编译后优化, 可能是这个原因导致了二者性能的差异.
python的性能优化方法有很多种, 最简单的方式是用更快的python解释器, python是有多种实现的, 官方提供的是CPython, 此外还有Jython(jvm的实现), IronPython(.Net的实现), pypy(纯python实现的), stackless python等很多种实现.
pypy是一个性能不错的解释器, 相同的例子, 在我的机器上使用pypy的运行结果如下
elapsed: 0.117020130157 elapsed: 0.501815080643
这个的性能提升还是非常明显的, pypy是大家可以考虑的一个解释器.
水平有限, 欢迎拍砖!
参考
代码执行的效率: http://coolshell.cn/articles/7886.html
pypy: http://pypy.org/
相关文章推荐
- 提高python代码的执行效率
- python中使用time模块计算代码执行效率的精度测试(转)
- 利用c模块代码,提升python代码执行效率
- python中使用time模块计算代码执行效率的精度测试
- 使用Python生成Shell命令,批量执行程序代码解析
- 浅谈代码的执行效率(一)
- 使用优化器来提升Python程序的执行效率的教程
- erlang&c&python&lua递归执行效率
- PHP码农平衡性--写代码的快慢,代码执行效率,日志统计,异常处理等
- 浅谈代码的执行效率(1):算法是关键
- Python 执行代码的两种方式
- PHP检验代码执行效率—时间统计方法
- python 定时执行装饰器代码
- Python3.4(Pyhon)代码如何打包成.exe可执行文件——详细教程
- 良好的书写规范提高PHP代码执行效率
- python的架构及代码执行过程
- ssh批量登录并执行命令的python实现代码
- Python——可执行的伪代码
- 使用python代码执行外部的代码
- 在Linux中#!/usr/bin/python之后把后面的代码当成程序来执行。 但是在windows中用IDLE编程的话#后面的都是注释,之后的代码都被当成文本了。 该怎么样才能解决这个问题呢?