我有一个由多个python脚本组成的应用程序。其中一些脚本正在调用C代码。应用程序现在的运行速度比以前慢了很多,所以我想分析一下它,看看问题出在哪里。有没有工具、软件包或者仅仅是一种方法来分析这样的应用程序?一个工具,它将跟随python代码进入C代码,并分析这些调用?
注意1:我非常了解标准的Python分析工具。我在这里专门寻找组合的Python/C分析。
注2: Python模块使用ctype调用C代码(详细信息请参见http://docs.python.org/library/ctypes.html )。
谢谢!
发布于 2010-10-29 22:05:34
Stackshots工作。由于您已经将Python和C语言组合在一起,因此您可以分别处理它们。对于Python,您可以在检查堆栈时按Ctrl-C组合键。这样做几次。这将公开您可以在python代码中修复的任何内容。对于C代码,在像GDB这样的调试器下运行整个代码,然后按Ctrl-C组合键以获取C语言的堆栈跟踪。其中几个将暴露您可以在C代码中修复的任何内容。我听说OProfile也能做到这一点。(另一种方法是使用lsstack (如果可用)。)
这是一个基于此原则的鲜为人知的方法:假设您有一个无限循环或一个几乎无限的循环。你会怎么找到它?你会暂停程序,看看它在做什么,对吧?假设程序只花了必要时间的两倍。每次你停止它,你抓到它做不必要的事情的机会是50%。所以你所要做的就是多次停止它。一旦你看到它在做一些可以改进的事情,只需要2个样本,你就知道你可以修复它,以获得健康的加速。然后你可以重复它来得到下一个问题。测量不是重点。抓住你可以改进的东西才是重点。
发布于 2010-10-29 18:57:59
这种组合将非常困难,但您可以使用一些标准的分析器,如valgrind、gprof甚至oprofile (尽管我从未设法从中获得有意义的输出)。
https://stackoverflow.com/questions/4051117
复制相似问题