我正在使用cProfile来配置我的Python程序.根据这个说法,我的印象是KCacheGrind可以解析并显示cProfile的输出.
但是,当我去导入文件时,KCacheGrind只会在状态栏中显示"未知文件格式"错误,并且不显示任何内容.
在我的性能分析统计数据与KCacheGrind兼容之前,我需要做些什么特别的事情吗?
...
if profile:
import cProfile
profileFileName = 'Profiles/pythonray_' + time.strftime('%Y%m%d_%H%M%S') + '.profile'
profile = cProfile.Profile()
profile.run('pilImage = camera.render(scene, samplePattern)')
profile.dump_stats(profileFileName)
profile.print_stats()
else:
pilImage = camera.render(scene, samplePattern)
...
Run Code Online (Sandbox Code Playgroud)
包版本
我在php脚本上有一个xdebug配置文件,我用kcachegrind解析.这是一个屏幕截图,显示在任何给定函数中花费的最多时间都花在内部<cycle 1>,而顶部' 调用者'是由index.php中的'include'和'include_once'构成的.

此配置文件在使用apache'ab'进行压力测试期间运行,因此发生了许多并发连接.
<cycle 1>在xdebug配置文件上显示什么?
我试图理解左侧面板中Kcachegrind中显示的值
我有包含 (我在手册中读到的内容包括),Self,称为函数
现在我正在分析这个cachegrind文件,我有
Incl. ---- Self ---- Called ---- Function
100.05 ---- 0.04 ---- (0) ---- {main}
83.38 ---- 0.07 ---- 250 --- item->close
78.85 ---- 78.85 ---- 10 067 ---- php::mysql_query
Run Code Online (Sandbox Code Playgroud)
并且列表继续..
但这是我的问题.
我认为项目 - >关闭是我的瓶颈,但我不明白的是它是如何包含83.38的包含,然后是0.07的Self和mysql_query命令在两者中都是相同的.
"自我"在这里意味着什么?
这些百分比如何相互关联?我不明白item-> close需要83%而mysql_query需要78%
谢谢
Kcachegrind摇滚,这是我最喜欢的工具,但是我不时会错过在远程服务器上运行终端(例如使用ssh)的能力.
我知道可以设置VNC或X服务器转发,但是在我需要简单的东西时它非常笨拙.
是否有任何kcachegrind控制台替代(例如基于ncurses)?
我试图获得有关大型程序流程的一些信息.过去,KCachegrind曾经很擅长这一点.但是我系统上的最新版本(0.6kde)(Kubuntu 10.10)将不会显示调用树和调用者映射.它只绘制一个包含当前函数的框,但没有箭头和没有调用者.这是控制台输出:
kcachegrind(27917)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing "/usr/share/mime/magic"
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No such file or directory
QFileSystemWatcher: failed to add paths: /home/cosmin/.config/ibus/bus
Bus::open: Can not get ibus-daemon's address.
IBusInputContext::createInputContext: no connection to ibus-daemon
CallGraphView::refresh
CallGraphView::refresh: Started process 0x1346f50, 'dot -Tplain'
CallGraphView::readDotOutput: QProcess 0x1346f50
CallGraphView::dotExited: QProcess 0x1346f50
Run Code Online (Sandbox Code Playgroud)
我安装了dot(graphviz),并且使用-g -O0编译了应用程序.
你知道问题出在哪里吗?
我正在寻找一个KCacheGrind替代品,或者至少是Mac OS X的二进制包?
我将使用KCacheGrind与XDebug for PHP,但Mac Os X在这里是正确的环境......
谢谢
编辑:我知道我可以使用MacPort,但我正在寻找这种痛苦安装的替代方案.
也许是"在mac方式"的东西
我试图理解程序的性能如何在使用不同选项运行时发生变化 - 我的因子为1.8我想解释一下.我一直在用[valgrind]的callgrind工具进行分析,并使用kcachegrind来显示结果.但我真的很想看看差异.我找到了该cg_diff程序,但它不能与callgrind配置文件一起使用,只能使用cachegrind配置文件,这对我来说太昂贵了.
有没有人知道用于可视化两个配置文件之间差异的工具?
谁能告诉我如何对kcachegrind的结果感兴趣.
我有两个版本的代码(v1,v2)都在调试模式下编译.我通过valgrind用选项运行它们:
valgrind --tool=callgrind -v ....
这样生成的输出文件在kcachegrind中打开.现在我已经发现代码的版本v2运行速度比第一版v1更快,因为它意味着.但是我如何从kcachegrind的调用图中获得结果.
在kcachegrind All Callers选项卡中,我有以下列:Incl. , Distance, Called, Caller.
IIUC,Called并且caller在计划中没有被称为"来电者".但我不了解其他人.
另一件事是在选择特定功能然后在"呼叫者"选项卡上显示更多信息.Ir, Ir per call, count, caller
在类型选项卡中:`EventType,Incl.自我,简短,公式.
我在这里没有任何想法.
到目前为止,我读过这些问题:
通过大量的努力和教程,我得到了xdebug/wincachegrind并且正在运行,但大多数教程以"现在每个人都在工作,享受"结束.
Everythings工作,但我没有得到统计数据中的列命名:
我有点困惑,我找不到合适的答案,对不起,如果这是一个愚蠢的问题.
我正在分析PHP应用程序(构建在Zend框架上).附上您可以找到KCacheGrind从xDebug输出生成的主调用图的屏幕截图.
有两件事我不明白:
1)为什么{main} "分叉"成2个电话?它们应该以某种方式并行还是一个接一个地发生?
2)左边的箭头{main}有一个带文字的小蓝条2x; 这是否意味着召唤Zend_Application->bootstrap发生了两次?
