包中的python与源代码编译的python之间的性能差异

时间:2013-03-13 21:40:32

标签: python django performance apache redhat

我想知道我可以从rpm(或使用yum)安装的Python解释器与从源编译的Python解释器(具有用于编译的先验良好设置标志)之间存在任何记录的性能差异。

我使用Redhat 6.3机器作为Django / Apache / Mod_WSGI生产服务器。我已经在不同的设置和不同的顺序中正确编译了所有内容。但是,我通常会在这样的机器上保留build-dev依赖项。对于一些与自我相关的(以及或多或少的实际)原因,我想使用Python-2.7.3。默认情况下,Redhat附带Python-2.6.6。我想我可以坚持下去,但它会以某种方式伤害我(我不得不放弃并找到一些库和我的自我的替代品。)

然而,除了我的自我和依赖,我想知道Django服务器在性能方面会有什么影响。

1 个答案:

答案 0 :(得分:4)

如果使用与编译RPM版本完全相同的标志进行编译,您将得到一个完全一样快的二进制文件。您可以通过查看RPM的spec文件来获取这些标记。

但是,您有时可以更好而不是预建版本。例如,您可以让编译器针对您的特定CPU进行优化,而不是针对“通用386兼容”(或者针对RPM优化的任何内容)进行优化。当然,如果您不知道自己在做什么(或者是故意这样做的话),那么构建比预建版本更慢的东西总是可能的。

同时,2.7.3在几个区域比2.6.6更快。他们中的大多数通常不会影响你,但如果他们这样做,他们可能会是一个巨大的胜利。

最后,对于绝大多数Python代码,Python解释器本身的速度与您的整体性能或可伸缩性无关。 (当它是,你可能想尝试PyPy,Jython或IronPython来取代CPython。)对于WSGI服务尤其如此。如果你做得不慢,Apache可能会成为瓶颈。如果 做任何事情都很慢,那么它可能是I / O绑定的,并且远远超出了Python的控制范围(比如读取文件)。

最终,你可以知道你获得多少收益的唯一方法是尝试两种方式和性能测试。但是,如果你只是想要一个经验法则,我会说要获得0%的收益,如果你运气好的话会感到惊喜。