返回介绍

建议80:借助性能优化工具

发布于 2024-01-30 22:19:09 字数 1177 浏览 0 评论 0 收藏 0

“工欲善其事,必先利其器”,好的工具能够对性能的提升起到非常关键的作用。常见的性能优化工具有Psyco、Pypy和cPython等。本节我们将简单讨论前两者,cPython性能优化具体使用见建议90一节。

(1)Psyco

Psyco是一个just-in-time的编译器,它能够在不改变源代码的情况下提高一定的性能,Psyco将操作编译成部分优化的机器码,其操作分成三个不同的级别,有“运行时”、“编译时”和“虚拟时”变量,并根据需要提高和降低变量的级别。运行时变量只是常规Python解释器处理的原始字节码和对象结构。一旦Psyco将操作编译成机器码,那么编译时变量就会在机器寄存器和可直接访问的内存位置中表示。同时Python能高速缓存已编译的机器码以备以后重用,这样能节省一点时间。但Psyco也有其缺点,如,其本身运行所占内存较大。2012年3月12日,Psyco项目主页上宣布Psyco停止维护并正式结束,由Pypy所接替。到结束为止,Psyco也没有提供对Python2.7版本的支持。对Psyco感兴趣的读者可以参考其主页(http://psyco.sourceforge.net/)了解更多信息。

(2)Pypy

Python的动态编译器,是Psyco的后继项目。其目的是,做到Psyco没有做到的动态编译。Pypy的实现分为两部分:第一部分“用Python实现的Python”,这里虽然是这么说,但实际上它是使用一个名为RPython的Python子集实现的,Pypy能够将Python代码转成C、.NET、Java等语言和平台的代码;第二部分Pypy集成了一种编译rPython的即时(JIT)编译器,和许多编译器、解释器不同,这种编译器不关心Python代码的词法分析和语法树,因为它是用Python语言写的,所以它直接利用Python语言的Code Object(Python字节码的表示),也就是说,Pypy直接分析Python代码所对应的字节码,这些字节码既不是以字符形式也不是以某种二进制格式保存在文件中。如图8-1所示是针对同一段代码分别使用Python和Pypy运行得到的时间消耗示意图。

从图8-1中可见看出,使用Pypy来编译和运行程序,随着运算规模的扩大,其效率显著提高。

图8-1 Python与Pypy运行时间比较

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文