1

我正在分析我的应用程序,我发现很多时间都在睡觉。有很多地方叫睡眠。睡眠被调用是因为线程在很多地方都在等待资源。但是有一些后台任务不时运行,执行一些清理活动等。这些作业在每次运行之间休眠。

我想以这样一种方式分析我的应用程序,即它不包括从后台作业调用时睡眠所花费的任何时间(这是一个特定的类,我们称之为“类 BackGroundJobs”)。我只是想获得应用程序/线程睡眠的时间,这不是因为这个。基本上,我想因此排除睡眠。有人可以告诉我该怎么做吗?

我试过这样做,

vsinstr.exe /exclude="BackGroundJobs::*" 可执行文件

并收集分析数据。

这只是 BackGroundJobs 类无法完成的工作,但仍包括 BackGroundJobs 调用的睡眠时间,因为睡眠不是 BackGroundJobs 的一部分。有人可以告诉我如何排除吗?

举个例子,数字都是虚构的例子,

Class::A::meth(班级在其活动中花费的时间 5s) --> Calls Sleep 20s Class::B::meth(班级在其活动中花费的时间 5s) --> Class Sleep 20s BackGroundJobs(班级在其活动中花费的时间 10s) --> Class Sleep 20s

在分析结果中:A类花费的时间::meth:5s B类花费的时间::meth:5s BackGroundJobs花费的时间:0s(不存在于报告中,因为它被排除在外) Sleep花费的时间:20s(由 A::meth)+20s(B::meth)+20s(BackGroundJobs::xxx) = 60s

我希望按如下方式计算睡眠时间,睡眠时间:20s(by A::meth)+20s(B::meth)+0s(BackGroundJobs::xxx) = 40s

我如何实现这一目标?

TIA

4

0 回答 0