作者 | Kevin Modzelewski

译者 | 弯月,责编 | 杨碧玉

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

首先,请允许我隆重地宣布 Pyston v2 发布。Pyston v2 是 Python 编程语言的一种更快且高度兼容的实现。在我们的宏基准测试中,Pyston v2 比原版的 Python 3.8快20%。更重要的是,在你的代码上,它可以更快。Pyston v2 可以降低服务器成本,减少用户延迟,并提高开发人员的生产力。

Pystonv2 的部署非常简单,因此如果你希望获得更好的 Python 性能,那么我们建议你花五分钟时间尝试一下 Pyston。使用 Pyston v2 是最简单的加快项目速度的方法之一。

性能

Pystonv2 在许多工作负载上均提供了显著的速度提升,同时鲜有弊端。我们的工作重点一直放在 Web 服务工作负载上,但是 Pyston v2 在其他工作负载和流行的基准测试上也实现了更高的速度。

我们的团队整理了一份全新的公共 Python 宏基准测试套件,该套件可测量多个常用 Python 项目的性能。该套件中的基准规模超过了其他 Python 套件,因此可以更真实地代表实际的应用程序。尽管这导致我们的项目不如其他项目那样受人关注,但我们相信这个测试套件展示了 Pyston v2 在面对实际用例时可以更好地提升速度。Pyston v2 在宏基准测试上展示了性能的提升,在 chaos.py 和 nbody.py 等的测试中,其速度是标准 Python 的两倍。

下面是我们的性能测试结果:

CPython 3.8.5 Pyston 2.0 PyPy 7.3.2
Flaskblogging 预热时间 [1] n/a n/a 85s
flaskblogging 平均延迟 5.1ms 4.1ms 2.5ms
flaskblogging p99 延迟 6.3ms 5.2ms 5.8ms
flaskblogging 内存使用 47MB 54MB 228MB
djangocms 预热时间 [1] n/a n/a 105s
djangocms 平均延迟 14.1ms 11.8ms 15.9ms
djangocms p99 延迟 15.0ms 12.8ms 179ms
djangocms 内存使用 84MB 91MB 279MB
Pylint 加速 1x 1.16x 0.50x
mypy 加速 1x 1.07x [2] 不支持
PyTorch 加速 1x 1.00x [2] 不支持
PyPy 基准测试套件 [3] 1x 1.36x 2.48x

上述结果是在运行了 Ubuntu 20.04 的 m5.large EC2 实例上收集的。

  1. 预热时间的定义为基准达到峰值性能的95%之前的时间。如果无法与噪声区分开,则用“n/a”表示。我们的延迟测试仅考虑预热后的行为。

  2. mypy 和 PyTorch 不支持利用源代码自动构建 C 扩展名,因此这些 Pyston 的测试结果使用了不安全的兼容模式。

  3. 我们对 PyPy 基准套件进行了修改,使其仅运行与 Python 3.8兼容的基准。

结果分析

在我们的目标基准测试(djangocms + flaskblogging)中,Pyston v2 的平均延迟平均提高了1.22倍,p99 延迟平均提高了1.18倍,同时每个进程仅使用了几兆字节。我们尚未优化其他基准。

p99 延迟指的是响应时间分布的第99个百分位,是 Web 服务中的常用指标,它可以表示用户体验到的平均延迟。PyPy 在 djangocms 上的高p99延迟来自周期性的延迟峰值,大概是由于垃圾收集暂停导致的。CPython 和 Pyston 都表现出周期性的峰值,大概是由于它们的周期收集器引起的,但是它们的频率较低且幅度较小。

mypy 和 PyTorch 基准显示了 Pyston v2 的自然边界。这些基准测试都大部分都是在 C 扩展中完成的,这些扩展不受我们的 Python 加速影响。我们支持 C API,而且没有模拟层,因此我们可以进一步少量提升 mypy 性能,并且不会降低 pytorch 或 numpy 的性能。具体的收益取决于 Python 和 C 扩展的混合程度。

技术方法

我们在 Pyston v2 中使用的技术包括:

  • 使用 DynASM 开销非常低的JIT

  • Quickening

  • 常规的 CPython 优化

  • 建立改进流程

兼容性

由于 Pyston 是 CPython 的分支,因此我们认为它是兼容性最高的 Python 实现之一。它支持 CPython 所有的功能以及 C API。

尽管从理论上来说 Pyston 的功能相同,但实际上,任何新的 Python 实现都存在或多或少的兼容性难题。

可用性

Pystonv 2.0可作为预编译包立即使用。当前,我们提供适用于 Ubuntu 18.04 和 20.04 x86_64 的软件包。

Pyston 的试用只需安装软件包即可,用 pyston3 替换 python3,然后用 pip-pyston3install 重新安装依赖项。如果你有现成的自动构建,则只需修改几行代码。

背景

我们在 Dropbox 设计了 Pyston v1,目的是加快其 Python 的 Web 服务工作量。项目结束后,我们团队中的一些人集思广益,集中讨论了如何采用不同的方式构建 Pyston。Pyston v2 的灵感来自 Pyston v1,但技术却与v1没有关系。

我们的使命是打造更快的 Python,而且我们有很多实现思路。请继续关注将来的版本,如果有任何疑问,请与我们联系!

原文:https://blog.pyston.org/2020/10/28/pyston-v2-20-faster-python/

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞小霸王被申请破产重整;虎牙员工自曝被HR抬出公司;Office 2010被微软终止服务|极客头条
☞九问国产操作系统,九大掌门人万字回应!
☞突围 2020!程序员这样学 AI !☞一文读懂机器学习“数据中毒”☞深度揭秘:腾讯存储技术发展史
☞用0和1书写新金融体系,DeFi的火焰已无法熄灭
点分享点点赞点在看

Pyston v2.0 发布,速度比 Python 快 20%!相关推荐

  1. 终于来了!Pyston v2.0 发布,速度比 Python 快 20%!

    作者 | Kevin Modzelewski 译者 | 弯月,责编 | 杨碧玉 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 首先,请允许我隆重地宣 ...

  2. CSDN 日报第 1 期:蚂蚁集团将向机构投资者退款;Pyston v2 发布 比 Python 快 20%

    CSDN日报--给技术人奉上当日新鲜的科技资讯和优质博文干货! 互联网快讯 1.蚂蚁集团将向机构投资者退款,场外已交易 1000 万股 蚂蚁集团董事长井贤栋连夜组织召开中高层会议,蚂蚁暂缓上海.香港两 ...

  3. python2.0正式发布时间_终于来了!!Pyston v2.0 发布,解决 Python 慢速的救星

    给大家推荐本书<PyCharm中文指南>,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来.有兴趣的可以看它的在线文档:http://pycharm.iswbm.com ...

  4. 强势回归!比 Python 快 20% 的 Pyston v2.0 来了!

    作者:Kevin Modzelewski 机器之心编译 比 Python 快 20% 的 Pyston v2.0 来了. 2014 年,Python 实现 Pyston 诞生.Pyston 的开发目标 ...

  5. CYQ.DBImport 数据库反向工程及批量导数据库工具 V2.0 发布[增加批量导出数据库脚本及数据库设计文档]...

    上次发布的:CYQ.DBImport V1.0的相关介绍:CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 本次发布的V2.0 版本,准备突击海外,下面为相关的介绍. 一:新版本2 ...

  6. 移动电影院V2.0发布,满足影迷移动巨幕/移动3D 体验

    移动电影院V2.0发布,满足影迷移动巨幕/移动3D 体验 移动电影院召开发布会,对外发布了全新升级的移动电影院V2.0版.升级后的版本可满足3D观影,观众通过VR一体机绑定移动电影院账号可实现移动巨幕 ...

  7. JAVA三维可视化组件:Matplot 3D for JAVA(V2.0) 发布 欢迎使用JAVA平台 类似 Python 的 matplotlib

    目录 概述 V3.0介绍 V4.0介绍 组件下载及项目地址: V2.0版本主要改进: 概述 本人独立研发的一款JAVA平台可视化组件:Matplot3D for JAVA(V2.0) .基于JAVA ...

  8. 电影天堂React Native 客户端V2.0发布

    电影天堂React Native 客户端 重新开始! 具体更新以https://github.com/XboxYan/DYTT为准. 重新开始 两年前发布了第一个版本. 现在, 使用最新的react- ...

  9. 网站SEO优化、IIS日志分析工具 IISLogViewer V2.0 发布

    2019独角兽企业重金招聘Python工程师标准>>> PS:为了有个响亮些的名字,软件中文名更名为:点格网站日志分析器 本次发布IIS日志分析工具[IISLogViewer] V2 ...

最新文章

  1. ubuntu18.04上安装TensorFlow2.0
  2. 坑爹的PHImageManager和PHImageRequestOptions
  3. webdriver中处理alert
  4. 解决:请购买WinRAR许可,您注册还剩下40天(WinRAR老是弹出烦人的对话框)
  5. 现代IM系统中的消息系统架构 - 模型篇
  6. 从HashiCorp Nomad对上百万容器进行调度所学到的经验
  7. Apache 的管理及优化web
  8. c语言中变量有几种存储方式,C语言变量的存储类别有哪些详细资料介绍
  9. 计算机网络知识简单介绍
  10. 怎么建立计算机共享文件夹,如何在局域网内建立共享文件夹
  11. c语言中验证巴德哥赫猜想,哥赫巴德猜想具体内容是什么?
  12. php psd图层重命名,ps批量修改图层名字的脚本(附批量替换方法)
  13. 数据格式与数据类型(Content-Type)
  14. 【渝粤教育】国家开放大学2018年春季 0043-21T计算机文化 参考试题
  15. 入门命令5-流程跳转:goto
  16. C# Serilog日志框架
  17. vue模块单独封装html,在vue中怎么定义自定义组件?
  18. python函数的调用方式_Python中函数参数调用方式分析
  19. 编程中,有哪些好的习惯一开始就值得坚持?
  20. 文件下载文件中文名问题

热门文章

  1. php文件下载IE文件名乱码问题
  2. struts2学习笔记(三) Action(上)
  3. 解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory...
  4. 06 iOS 关闭侧滑返回
  5. h5-localStorage实现缓存ajax请求数据
  6. 移动端报表JS开发演示样例
  7. centos6.5 安装mono
  8. Qt 学习之路 :Qt 线程相关类
  9. 总结ubuntu 在命令界面login incorrect的问题
  10. 如何自定义Struts2表单验证后的错误信息显示格式