1

我正在尝试分析我们的 django 单元测试(如果测试更快,我们会更频繁地运行它们)。我已经通过 python 的内置 cProfile 分析器运行它,生成了一个 pstats 文件。

但是信噪比很差。列出的功能太多。当我进行一个数据库查询时,会调用很多很多 django 内部函数。这使得很难看到发生了什么。

无论如何我可以“汇总”某个目录之外的所有函数调用吗?

例如,如果我在我的目录之外调用一个 python 函数,然后它调用 5 个其他函数(都在我的目录之外),那么它应该把所有这些都汇总起来,所以看起来只有一个函数调用,它应该显示累积整个事情的时间。

显然,如果您想分析(例如)Django,这很糟糕,但我不想这样做。

我查看了 pstats.Stats 对象,但看不到修改此数据的明显方法。

4

1 回答 1

1

我对 python 的经验很少,但在性能调优方面有很多经验,所以这里有一种可能性:

  1. 与其将分析作为单元测试的一部分运行,不如只进行总体执行时间测量。如果这些变化不大,你就可以了。

  2. 当您确实检测到更改时,或者如果您只想让事情运行得更快,请使用此方法。正如您所说,它具有更高的“信噪比”。

不同之处在于您不希望分析器能够找出您需要查看的内容。它更像是调试器中的断点,断点不是发生在您选择的位置,而是很有可能发生在不必要的缓慢时。如果在两次或更多情况下,您看到它在做一些可能会被更好的东西取代的事情,平均而言,它会得到回报,并且修复它会使其他问题更容易通过相同的方法找到。

于 2012-11-02T19:54:06.657 回答