首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不总是对Python代码使用呢?

为什么不总是对Python代码使用呢?
EN

Stack Overflow用户
提问于 2009-02-22 18:23:50
回答 8查看 13.4K关注 0票数 41

psyco似乎对优化Python代码很有帮助,而且它是以一种非常非侵入性的方式完成的。

因此,人们不得不怀疑。假设您一直使用x86架构(这是目前大多数应用程序运行的架构),为什么不对所有Python代码都使用psyco呢?它有时会出错并破坏程序的正确性吗?增加了一些奇怪情况的运行时间?

你对它有什么负面的经验吗?到目前为止,我最负面的经验是它只让我的代码快了15%。通常这样会更好。

当然,使用coding并不能替代高效的算法和编码。但是,如果您可以用两行代码(导入和调用psyco)来提高代码的性能,我看不出有什么好的理由不这样做。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-09-17 10:23:31

1)内存开销是主要原因,如其他答案所述。您还需要支付编译成本,如果您没有选择性,这可能是令人望而却步的。从user reference

对于中型或大型应用程序来说,

编译所有内容通常是大材小用。编译过多的缺点在于编译所花费的时间,以及这个过程消耗的内存量。这是一个需要保持的微妙平衡。

2)性能实际上可能会受到actually编译的影响。同样来自用户指南("known bugs"部分):

也有性能错误:在这种情况下,instead会放慢代码的速度,而不是加速代码。很难完整列出可能的原因,但这里有几个常见的原因:

  • 必须避免使用内置的mapfilter函数,并将其替换为列表理解。例如,map(lambda x: x*x, lst)应该被更具可读性但更新的语法所取代。[x*x for x in lst].
  • The编译正则表达式似乎并没有从map(lambda x: x*x, lst)中受益。(正则表达式的执行不受影响,因为它是C代码。)不要在此模块上启用Psyco;如果需要,请显式禁用它,例如,通过调用psyco.cannotcompile(re.compile).

3)最后,在一些相对模糊的情况下,使用Finally实际上会引入bug。其中一些是listed here

票数 22
EN

Stack Overflow用户

发布于 2009-02-22 18:45:14

目前使用了大量的内存。它现在只能在Intel 386兼容的处理器上运行(在任何操作系统下)。Python的工作方式有一些细微的语义差异(即错误);它们在大多数程序中不应该很明显。

另请参阅caveats section。举一个很难的例子,我注意到我的web应用程序使用猎豹生成的模板和DB I/O并没有获得明显的加速。

票数 6
EN

Stack Overflow用户

发布于 2009-02-22 18:26:25

在使用pyglet时,我发现如果不让我的应用程序不起作用,我就无法在整个应用程序上使用entire。当然,我可以在数学繁重的小段代码中使用它,但这不是必需的,所以我没有麻烦。

此外,my对我的分析结果做了一些奇怪的事情(例如,好吧,根本不会改变它们,而不是使用非my版本)。我怀疑它不能很好地处理分析代码。

我只是不会真的使用它,除非我真的想要速度,这并不是所有的经常。我的首要任务是算法优化,这通常会带来更好的加速效果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/575385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档