我在一个大型金融定价应用程序上工作,其中有一些长期运行的计算。我们已经确定了一些可以通过选择性应用psyco来加速的功能。我的管理层要求对费用进行评估。将psyco添加到我们的堆栈中的好处。
鉴于我的项目的关键性质,如果“性能增强”可能会降低可靠性,那么这是不可接受的。我已经读过使用psyco获得额外的性能,代价是使用更多的内存。我担心这可能是个问题。
我这样做:
@psyco.proxy
def my_slow_function(xxx):
总之,我们希望将psyco应用于不超过15个功能 - 这些功能非常重要。这个库中有数千个函数,所以这只影响我们代码的一小部分。所有功能都很小,数学和无状态。
仅供参考,平台是Windows 32位XP上的Python 2.4.4
更新:似乎主要的潜在风险是由于程序需要更多的内存来运行比添加psyco之前,所以理想情况下我想找到一种方法来查看添加psyco是否会显着改变内存需求系统
答案 0 :(得分:3)
为什么不尝试分析它呢? Psyco有一个非常详细的logging设施:
内存使用量:x + kb
Psyco目前关于发射的机器代码和支持数据结构消耗了多少内存的概念。这是对内存开销的一种估计(+符号应该提醒你这个数字被低估了)。使用此信息调整内存限制(第3.2.2节)。
另请注意memory usage is configurable:
<强> memorymax 强>
当Psyco消耗的内存达到极限(以千字节为单位)时停止。此限制包括此Profiler启动之前消耗的内存。
答案 1 :(得分:2)
Psyco是一个JIT编译器。如果你的函数是无状态的,那么除了更多的内存之外几乎没有任何退缩。