我有一个由多个 python 脚本组成的应用程序。其中一些脚本正在调用 C 代码。该应用程序现在的运行速度比以前慢得多,因此我想对其进行分析以查看问题所在。是否有工具、软件包或只是一种分析此类应用程序的方法?有一个工具可以将 python 代码转换为 C 代码并分析这些调用吗?
注 1:我非常了解标准的 Python 分析工具。我在这里专门寻找组合的 Python/C 分析。
注 2:Python 模块使用 ctypes 调用 C 代码(请参阅http://docs.python.org/library/ctypes.html http://docs.python.org/library/ctypes.html了解详情)。
Thanks!
堆栈截图 https://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024工作。由于您已经组合了 Python 和 C,因此您可以单独处理它们。对于 Python,您可以在检查堆栈速度很慢时按 Ctrl-C。这样做几次。这将暴露您可以在 python 代码中修复的任何内容。对于 C 代码,在 GDB 之类的调试器下运行整个程序,然后按 Ctrl-C 以获得 C 中的堆栈跟踪。其中一些将公开您可以在 C 代码中修复的任何内容。我听说 OProfile 也可以做到这一点。 (另一种方法是使用lsstack如果有的话。)
这是一种鲜为人知的方法,其工作原理如下:假设您有一个无限循环或接近无限循环。你会怎么找到它?您会停止该程序并查看它在做什么,对吗?假设该程序只花费了所需时间的两倍。每次你停止它时,你发现它做不必要的事情的几率是 50%。所以你所要做的就是多次停止它。一旦您看到它在短短 2 个样本上做了一些可以改进的事情,您就知道您可以修复它以实现健康的加速。然后你可以重复它来解决下一个问题。测量不是重点。抓住你可以改进的地方才是重点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)