- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试分析我的应用程序以监控函数的效果,包括重构前后的情况。我对我的应用程序进行了分析并查看了摘要,我注意到 Hot Path list 没有提到我使用的任何函数,它只提到了 Application.Run() 之前的函数
我对分析相当陌生,想知道如何获得有关热路径的更多信息,如通过 MSDN documentation 演示的那样;
MSDN 示例:
我的结果:
我注意到在输出窗口中有很多与加载符号失败相关的消息,其中一些在下面;
Failed to load symbols for C:\Windows\system32\USP10.dll.
Failed to load symbols for C:\Windows\system32\CRYPTSP.dll.
Failed to load symbols for (Omitted)\WindowsFormsApplication1\bin\Debug\System.Data.SQLite.dll.
Failed to load symbols for C:\Windows\system32\GDI32.dll.
Failed to load symbols for C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll.
Failed to load symbols for C:\Windows\system32\msvcrt.dll.
Failed to load symbols for C:\Windows\Microsoft.NET\Framework\v4.0.30319\nlssorting.dll.
Failed to load symbols for C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll. Failed to load symbols for
C:\Windows\Microsoft.Net\assembly\GAC_32\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll.
Unable to open file to serialize symbols: Error VSP1737: File could not be opened due to sharing violation: - D:\(Omitted)\WindowsFormsApplication1110402.vsp
(使用代码工具格式化,因此可读)
感谢您的指点。
最佳答案
摘要 View 上显示的“热路径”是基于包含样本(来自函数的样本以及来自函数调用的函数的样本)和独占样本(仅来自函数的样本)数量的最昂贵的调用路径). “示例”只是当分析器的驱动程序捕获堆栈时函数位于堆栈顶部的事实(这发生在非常小的时间间隔内)。因此,一个函数的样本越多,它执行的越多。
默认情况下,抽样分析会启用名为“Just My Code”的功能,该功能会隐藏堆栈中来自非用户模块的函数(它将显示深度为 1 的非用户函数如果由用户函数调用;在您的情况下为 Application.Run
)。来自未加载符号的模块或已知来自 Microsoft 的模块的函数将被排除在外。摘要 View 上的“热路径”表明最昂贵的堆栈没有分析器认为是您的代码的任何内容(Main
除外)。来自 MSDN 的示例显示了更多函数,因为 PeopleTrax.*
和 PeopleNS.*
函数来自“用户代码”。可以通过单击摘要 View 上的“显示所有代码”链接来关闭“仅我的代码”,但我不建议在此处这样做。
查看摘要 View 中的“执行最独立工作的函数”。这将显示具有最高独占样本计数的函数,因此,根据分析场景,它们是调用成本最高的函数。你应该在这里看到更多你的函数(或你的函数调用的函数)。此外,“Functions”和“Call Tree” View 可能会向您显示更多详细信息(报告顶部有一个用于选择当前 View 的下拉菜单)。
至于您的符号警告,大部分都是预料之中的,因为它们是 Microsoft 模块(不包括 System.Data.SQLite.dll)。虽然您不需要这些模块的符号来正确分析您的报告,但如果您在“工具 -> 选项 -> 调试 -> 符号”中选中“Microsoft 符号服务器”并重新打开报告,这些模块的符号应该加载.请注意,第一次打开报表需要更长的时间,因为需要下载和缓存符号。
关于无法将符号序列化到报告文件中的另一个警告是由于文件无法写入的结果,因为它被其他阻止写入的东西打开。符号序列化是一种优化,它允许探查器在下一次分析时直接从报告文件中加载符号信息。如果没有符号序列化,分析只需执行与第一次打开报表时相同的工作量。
最后,您可能还想在分析 session 设置中尝试检测 而不是采样。 Instrumentation 修改您指定的模块以捕获每个函数调用的数据(请注意,这可能会导致 .vsp 文件大得多)。插桩非常适合关注特定代码片段的时间,而采样非常适合一般的低开销分析数据收集。
关于c# - 函数分析问题 - Visual Studio 2010 Ultimate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525758/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!