2

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

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

我这样做是这样的:

@psyco.proxy
def my_slow_function(xxx):

总之,我们希望将 psyco 应用到不超过 15 个功能上——这些功能被大量使用。这个库中有数千个函数,所以这只会影响我们代码的一小部分。所有的功能都是小的、数学的和无状态的。

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

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

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

4

2 回答 2

3

为什么不尝试分析它?Psyco 有一个非常详细的日志记录工具:

内存使用:x+ kb

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

另请注意,内存使用情况是可配置的:

最大记忆

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

于 2009-09-17T09:10:51.573 回答
2

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

于 2009-09-17T08:20:41.490 回答