三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> python -> 聊聊Python中的pypy -> 正文阅读
 

[python]聊聊Python中的pypy

聊聊Python中的pypy 这篇文章主要介绍了聊聊Python中的pypy,具有一定借鉴价值,需要的朋友可以参考下
PyPy是一个虚拟机项目,主要分为两部分:一个Python的实现和 一个编译器
PyPy的第一部分: 用Python实现的Python
  其实这么说并不准确,准确得说应该是用rPython实现的Python,rPython是Python的一个子集,虽然rPython不是完整的Python,但用rPython写的这个Python实现却是可以解释完整的Python语言。
PyPy的第二部分:编译器
这是一个编译rPython的编译器,或者说这个编译器有一个rPython的前端,目前也只有这么一个前端,不过它的后端却是不少,也就是说这个编译器支持许多的目标语言,比较重要的有:C,CIL,JavaScript...
第一部分看成pypy(1)第二部分看成pypy(2)
为什么你在同一层面下同时需要这两者?你可以这样想一下:PyPy(1)是一个用RPython写的解释器,因此它能加载用户的Python代码并将它编译成字节码。但是这个用RPython写的解释器本身要能运行,就必须要被另外一个Python实现去解释。我们可以直接用CPython去.运行这个解释器。但是这个还不够快取而代之,我们使用了PyPy(2)去编译这个PyPy的解释器,生成其他平台(比如C,JVM或CLI)代码在我们的机器上运行,并且还加入了JIT特性。JIT能够把字节码转换成机器语言,pypy之所以快,是因为它整合了JIT跟踪技术的优化编译器。
pypy性能测试


Cpython2.7.6,pyston0.2,pypy2.2.1的性能对比,使用的是pyston源代码目录下的minibenchmarks和microbenchmarks中
的python代码来跑,对比结果如下表所示
Cpython2.7.6
pyston0.2
microbenchmarks
attribute_lookup.py
258.544s
200.387s
2.667s
attrs.py
0.622s
1.658s
0.086s
closures.py
0.485s
6.658s
0.058s
empty_loop.py
3.532s
19.248s
0.248s
fib2.py
3.375s
0.669s
0.804s
fib.py
3.696s
0.636s
0.864s
function_calls.py
5.283s
0.878s
0.303s
gcj_2014_2_b.py
1.527s
45.803s
0.276s
gcj_2014_3_b.py
0.022s
0.174s
0.069s
iteration.py
0.185s
1.242s
0.062s
lcg.py
2.910s
9.097s
0.235s
listcomp_bench.py
10.132s
56.170s
1.379s
nested.py
0.368s
6.828s
0.057s
polymorphism.py
4.358s
4.390s
14.260s
prime_summing.py
20.197s
43.779s
1.250s
pydigits.py
0.034s
Failed
0.039s
repatching.py
0.475s
0.384s
0.061s
simple_sum.py
0.075s
0.578s
0.040s
sort.py
2.216s
4.587s
0.135s
thread_contention.py
6.486s
8.133s
0.240s
thread_uncontended.py
1.324s
5.823s
0.238s
unwinding.py
1.082s
93.180s
4.481s
vecf_add.py
9.890s
Failed
0.059s
vecf_dot.py
4.944s
8.434s
0.062s
minibenchmarks
allgroup.py
0.836s
Failed
18.804s
chaos.py
26.268s
Failed
1.392s
fannkuch_med.py
0.990s
1.898s
0.325s
fannkuch.py
10.952s
20.834s
2.057s
Go.py
53.787s
Failed
33.638s
interp2.py
5.521s
10.124s
0.701s
interp.py
10.863s
5.035s
0.563s
nbody_med.py
3.132s
6.642s
0.601s
nbody.py
12.677s
25.540s
1.470s
nq.py
29.879s
Failed
44.418s
raytrace.py
11.608s
Failed
1.228s
spectral_norm.py:
14.388s
118.309s
1.333s
pypy编译除了有颜色背景的数据,其它测试结果基本都是最快的,其中15个程序代码测试结果所花时间不到Cpython的十分之一
pypy的缺陷
可以看出pypy实现python有很大的优势,但是目前来说很多公司的python项目仍然没有采用pypy来实现,原因是
pypy有一个缺陷:C扩展性弱,简单理解就是python程序中如果混合了C/C++代码,调用了C/C++的库,就会导pypy
不支持或者pypy运行速度变慢很多。而现在很多项目都是采用C/C++/Python混合编程。
但是pypy也有自己的兼容C/C++的方法(但是没有完全解决扩展性弱的问题),pypy有ctypes和cffi两种方式来
进行C扩展,以下是一些简单程序实验:
用ctypes的方式实现C++,python混合编程,先写一个.cpp然后在python文件中调用它,最后用Cpython,和pypy分别编译执行都可以跑,说明ctypes是支持C++扩展的



这次用pypy跑的速度就要Cpython不少了
总结
以上就是本文关于聊聊Python中的pypy的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:linux 安装pypy , virtualenv及使用方法
  python 最新文章
对python的文件内注释 help注释方法
Python实现判断一行代码是否为注释的方法
Python加载带有注释的Json文件实例
Python实现的根据IP地址计算子网掩码位数功
好的Python培训机构应该具备哪些条件
Python获取系统所有进程PID及进程名称的方法
请不要重复犯我在学习Python和Linux系统上的
python获取当前用户的主目录路径方法(推荐)
深入浅析ImageMagick命令执行漏洞
Python实现的百度站长自动URL提交小工具
上一篇文章      下一篇文章      查看所有文章
加:2018-01-16 23:30:51  更:2018-01-16 23:32:00 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-22 13:09:13
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库