在使用heap_stat(一个基于PYKD库的Python脚本,用于在Windbg环境中运行Python脚本)时,我对这个脚本执行其工作所需的大量时间感到沮丧。你知道吗
因此,我使用“Very Sleepy”启动了一个分析会话,结果如下:
Name Exclusive Inclusive % Excl. %Incl. Module
RtlValidSecurityDescriptor 2561.56s 5123.12s 50.00% 100.00% ntdll
ZwWaitForSingleObject 1280.78s 1280.78s 25.00% 25.00% ntdll
NtUserWaitMessage 1279.73s 1279.73s 24.98% 24.98% win32u
如您所见,大部分时间都花在函数中,检查一些有效性(我认为不需要)。有没有办法禁用此检查(Windows配置、注册表设置等)?你知道吗
在第一条评论后编辑
由于请求了xperf
分析,我执行了以下xperf
命令:
启动分析:
xperf -start "DDS_LoggerName" -StackWalk ObjectCreate+ObjectDelete+ObjectReference -heap -Pids 28068
停止分析:
xperf -stop "DDS_LoggerName"
我已经用Windows Performance Analyzer
打开了结果(不完整,因为我第一次想看看结果是什么样子),但这对我来说毫无意义。我相信我的xperf
配置不好。我需要如何启动xperf
评测,以便能够度量哪个函数需要多少时间?你知道吗
我看到了你的xperf日志,这里是你的结果:
25%CPU接到电话 heap\u output=dbgCommand('!heap-h 0').split('\n')
75%回路 对于heap\u输出中的heap\u块: CPU的主要消耗者是pykd.ptrPtr公司你知道吗
CPU丢失的主要原因是大量调用dbgeng!调试引擎在内部刷新回调。事实上,所有的调试引擎函数都回忆起这个方法,我不明白为什么。你知道吗
我可以建议你重构堆_统计数据并用ptrDword或ptrQword重写自己的ptrPtr函数,这样可以减少CPU损耗。你知道吗
相关问题 更多 >
编程相关推荐