我已经开发了一个python C扩展,它从python接收数据并计算一些CPU密集型计算. 有没有可能分析一下C-分机?
这里的问题是,用C编写一个要分析的样本测试将是一个挑战,因为代码依赖于特定的输入和数据 struct (由python控制代码生成).
你有什么意见建议?
我已经开发了一个python C扩展,它从python接收数据并计算一些CPU密集型计算. 有没有可能分析一下C-分机?
这里的问题是,用C编写一个要分析的样本测试将是一个挑战,因为代码依赖于特定的输入和数据 struct (由python控制代码生成).
你有什么意见建议?
我已经找到了使用google-perftools的方法.诀窍是用python封装函数StartProfiler和StopProfiler(在我的例子中是通过cython).
分析C扩展就足以将Python代码包装在StartProfiler和StopProfiler调用中.
from google_perftools_wrapped import StartProfiler, StopProfiler
import c_extension # extension to profile c_extension.so
StartProfiler("output.prof")
... calling the interesting functions from the C extension module ...
StopProfiler()
然后进行分析,例如,您可以以callgrind格式导出,并在kcachegrind中查看结果:
pprof --callgrind c_extension.so output.prof > output.callgrind
kcachegrind output.callgrind