将Psyco混合到我的项目中有什么风险(如果有的话)?

时间:2009-09-17 08:11:55

标签: python psyco

我在一个大型金融定价应用程序上工作,其中有一些长期运行的计算。我们已经确定了一些可以通过选择性应用psyco来加速的功能。我的管理层要求对费用进行评估。将psyco添加到我们的堆栈中的好处。

鉴于我的项目的关键性质,如果“性能增强”可能会降低可靠性,那么这是不可接受的。我已经读过使用psyco获得额外的性能,代价是使用更多的内存。我担心这可能是个问题。

我这样做:

@psyco.proxy
def my_slow_function(xxx):

总之,我们希望将psyco应用于不超过15个功能 - 这些功能非常重要。这个库中有数千个函数,所以这只影响我们代码的一小部分。所有功能都很小,数学和无状态。

  • 是否存在使用更多内存的风险
  • 将这个组件添加到我们久已建立的库中时,我们可能遇到任何其他问题吗?

仅供参考,平台是Windows 32位XP上的Python 2.4.4

更新:似乎主要的潜在风险是由于程序需要更多的内存来运行比添加psyco之前,所以理想情况下我想找到一种方法来查看添加psyco是否会显着改变内存需求系统

2 个答案:

答案 0 :(得分:3)

为什么不尝试分析它呢? Psyco有一个非常详细的logging设施:

  

内存使用量:x + kb

     

Psyco目前关于发射的机器代码和支持数据结构消耗了多少内存的概念。这是对内存开销的一种估计(+符号应该提醒你这个数字被低估了)。使用此信息调整内存限制(第3.2.2节)。

另请注意memory usage is configurable

  

<强> memorymax

     

当Psyco消耗的内存达到极限(以千字节为单位)时停止。此限制包括此Profiler启动之前消耗的内存。

答案 1 :(得分:2)

Psyco是一个JIT编译器。如果你的函数是无状态的,那么除了更多的内存之外几乎没有任何退缩。