运行结不雅:
- call f cost: 0.0874309539795
- call integrate_f cost: 2.92381191254
机能晋升了大年夜概两倍,我们再来尝尝cython供给的静态类型(static typing),修改cython_example.pyx的核心代码,调换f()和integrate_f()的实现如下:
- def f(double x): # 参数静态类型
- return x**2-x
- def integrate_f(double a, double b, int N):
- cdef int i
- cdef double s, dx
- s = 0
- dx = (b-a)/N
- for i in range(N):
- s += f(a+i*dx)
- return s * dx
然后从新运行膳绫擎的第三 四步:结不雅如下
- call f cost: 0.042387008667
- call integrate_f cost: 0.958620071411
膳绫擎的代码,只是对参数惹人了静态类型断定,下面对返回值也惹人静态类型断定。
调换f()和integrate_f()的实现如下:
然后从新运行膳绫擎的第三 四步:结不雅如下
filename:lineno(function) 文件:行号(函数)
Amazing!
references
- 编程说话benchmark
- python属性查找
- python profiler
- yappi
- greenletprofiler
- python-profiling-tools
- python C API
- cython
- Pyrex
- cython document
- pypy
pypy
下面给出一段编造的”效力低下“的代码,并应用Cprofile来解释profile的具体办法以及我们可能碰到的机能瓶颈。
pypy是CPython的一个替代实现,其最重要的优势就是pypy的速度,下面是官网的测试结不雅:

在实际项目中测试,pypy大年夜概比cpython要快3到5倍!pypy的机能晋升来自JIT Compiler。在前文提到google的Unladen Swallow 项目也是想在CPython中惹人JIT,在这个项目掉败后,很多开辟人员都开端参加pypy的开辟和优化。别的pypy占用的内存更少,并且支撑stackless,根本等同于协程。
pypy的缺点在于对C扩大方面支撑的不太好,须要应用CFFi来做binding。对于应用广泛的library来说,一般都邑支撑pypy,然则小众的、或者自行开辟的C扩大就须要从新封装了。
固然应用python的编程人员都应当接收其运行效力低的事实,但python在越多越来的范畴都有广泛应用,比如科学计算 、web办事器等。法度榜样员当然也欲望python可以或许运算得更快,欲望python可以更强大年夜。
ChangeLog
【编辑推荐】
- Python Decorator基本
- Python Yield Generator详解
- Python中的异步编程:Asyncio
- GAFT:一个应用Python实现的遗传算法框架
- 法度榜样员必知的Python陷阱与缺点列表
推荐阅读
于IT业内,大年夜数据之火热程度,似乎无出其右者。当然,在颇┞锋正爆发前夕,也应当合时泼盆冷水。谁能接触到数据国内冠以大年夜数据之名的企业数以千计,但细分其专注范畴,大年夜致可>>>详细阅读
本文标题:Python性能优化
地址:http://www.17bianji.com/lsqh/36589.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示