Facebook发布了Instagram使用的Cinder源代码

Facebook揭幕 最近通过帖子, 释放Cinder项目的源代码,是的 CPython分支的分支 以及Python编程语言的主要参考实现。

煤屑 在Facebook的生产基础架构中用于为Instagram提供动力 并进行了优化以提高性能。 该代码已经发布,讨论了将现成的优化移植到CPython主流的可能性,并帮助其他CPython性能改进项目。

Facebook提到它将不支持将Cinder作为单独的开源项目 并且代码以在公司基础架构中使用的形式呈现,而没有其他文档。

Cinder也没有推广自己作为CPython的替代品-主要的开发目标是改进CPython本身。

Cinder的代码被认为是合理可靠的 并在生产环境中进行了测试,但是 如果发现问题,则需要自行解决,因为Facebook不保证会响应外部错误消息 并拉取请求。

同时,Facebook并不排除与社区的建设性合作,并准备讨论有关如何使Cinder更快或如何加快将准备好的变更转移到CPython主框架的想法。

Cinder中实现的主要优化是:

  • 字节码在线缓存: 该方法的本质是确定可以动态优化的典型操作码执行情况,并用更快的专用选项替换该操作码。
  • 例行评估: 对于立即处理的异步函数调用,这些函数的结果将直接被覆盖,而无需创建协程并且不调用事件循环。 在Facebook大量使用的代码中,优化导致了大​​约5%的加速。
  • 在各个方法和功能级别上的JIT选择性编译: 可以通过“ -X jit”选项或环境变量PYTHONJIT = 1启用它,并使许多性能测试加速1,5到4倍。
    可以根据配置文件的结果确定应启用JIT的功能列表。 将来,期望基于对函数调用频率的内部分析来支持动态JIT编译,但是考虑到Instagram上启动过程的具体细节,JIT编译在初期也适用于Facebook。
    JIT首先将Python字节码转换为高级中间表示(HIR),该中间表示与Python字节码相当接近,但被设计为在堆栈中使用基于记录的虚拟机,而不是基于记录的虚拟机。使用类型信息和与性能相关的其他详细信息。 然后,将HIR转换为静态单一分配(SSA)形式,并根据参考计数和内存使用情况数据进行优化阶段。 结果,生成了一个低级的中间表示(LIR),它接近汇编语言。
  • 严格模式下的模块:该功能包含三个组件:StrictModule类型。 能够确定模块的执行不影响该模块外部代码的静态分析器。
  • 静态Python: 是一个实验性字节码编译器,它使用类型注释来生成特定于每种类型的字节码,并通过JIT编译运行得更快。 在某些测试中,静态Python和JIT的结合展示了比典型CPython最高7倍的性能提升。 在许多情况下,就像使用MyPyC和Cython编译器一样对结果进行评估。

最后 如果您有兴趣获得Cinder代码 或了解更多相关信息,可以咨询 以下链接中提供了详细信息。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。