标签: ants

为什么GetMessageW会在我的WPF应用程序中占用大量CPU?

我的手上有一个严重的头疼.我正在研究我们的应用程序中的WPF组件的性能问题.

我们的.net应用程序非常庞大,几乎完全以windows形式存在.作为新计划的一部分,我们使用丰富的WPF ui重写了我们的核心组件之一.有很多WinForms < - > WPF互操作正在将这个东西粘合在一起,我怀疑这可能与我所看到的有些相关.

当我在ANTS探查器中分析慢速操作时,我发现在函数UnsafeNativeMethods.IntGetMessageW中发生了很多活动.ANTS报告了与我们所有业务逻辑和wpf渲染内容相结合的CPU活动.没有使用循环的该函数的托管代码下线,所以无论IntGetMessageW正在做什么,我都会追求.

我对win32编程并不是特别精通,但我知道在该上下文中消息循环的基础知识.我在这里看到的并不是我们手动完成的任何事情 - 在我们的代码中,我们不会直接与底层的messageloop本身或者可以在WPF调度程序上访问的任何更复杂的东西进行交互.

我们这里讨论的WPF组件是从Window继承而来的(即它不仅仅是一个控件/用户控件),我们使用ShowDialog从我们用于在此组件的旧WinForms版本上调用ShowDialog的更高级逻辑中显示它.我们在WPF组件中使用了一些WindowsFormsIntegrationHost控件,以保持与我们在WPF中无法重写的一些现有部分的兼容性.

我已经研究了好几天了,但是从来没有发现过很多东西.我一直在寻找关于输入消息(鼠标和键盘)的模糊相关帖子,但我不知道我能做些什么来验证它; 我已经尝试过屠宰代码来删除我能做的所有鼠标/键盘操作.

我很难到达任何地方,主要是因为这行代码是完全孤立的(不是我可以指出的实际来自我们的代码的任何内容的父或子),并且完全不透明它正在做什么.

这是ShowDialog函数的ANTS调用图的图像,显​​示了到达此处的调用路径: 替代文字

我完全意识到这可能是必须要作为WPF的一部分完成的事情(尽管我们在WPF中编写的其他组件不显示此行为),或者这只是ANTS探查器中的一个非常奇怪的错误,但是在这一点我需要以某种方式验证它.如果有人能告诉我这里发生了什么或者可能会发生什么 - 或者指出某些方式我能够自己解决这个问题,我将以你的方式引导各种善意的业力.

更新:在回答下面的一些讨论时,这是ANTS的另一个视图 - 这个更好地说明了我遇到的困惑(这是在"CPU时间"模式下的ANTS视图).我匆忙审查了部分代码,但没有系统相关的功能:

替代文字

谢谢你的期待!

.net wpf performance getmessage ants

11
推荐指数
2
解决办法
2335
查看次数

为什么大括号花时间在C#代码上?

我正在使用Ants Performance Profiler 8.5,当我看到代码的每一行都运行时,我注意到括号也需要时间.

这是一张图片,你可以在大括号的左边看到以毫秒为单位的时间:

在此输入图像描述

有时我会得到更多的时间,比如5毫秒......

这是为什么?是垃圾收集吗?

c# performance profiling ants

8
推荐指数
1
解决办法
258
查看次数

将ants性能分析器附加到asp.net-mvc站点失败

目前我的asp.net-mvc网站使w3wp.exe进程cpu运行在100%.我认为红门蚂蚁剖析器应该能够给我一些关于我应该看的地方的线索.

当我开始一个分析会话时,我可以在IIS托管和开发服务器托管的asp.net Web应用程序之间进行选择.其中一个看起来是对我来说最合乎逻辑的选择

  • ASP.NET Web应用程序(托管在Web开发服务器中)我将它指向我的Web应用程序的dir(default.aspx所在的位置),并将绑定端口设置为正确的端口.
    按下"开始分析"按钮

  • ASP.NET Web应用程序(在IIS中托管)
    加载并启动项目后,我填写了完整的URL到我的localhost(包括端口)并按下"开始分析"

两个选项都失败,出现以下异常

Retrieving the COM class factory for component with CLSID {0002DF01-0000-0000-C000-000000000046} failed due to the following error: 80070002.  
System.IO.FileNotFoundException
  at bP.a(Boolean )
  at bP.a(Uri )
  at bT.LaunchFrontEndProcess()
  at RedGate.Profiler.Session.ProfilerSession.i()
  at RedGate.Profiler.Session.ProfilerSession.j()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# asp.net-mvc profiling ants

6
推荐指数
1
解决办法
2633
查看次数

在 StructureMap 应用程序上使用 ANTS 分析器时,“操作可能会破坏运行时的稳定性”

我们最近升级了一个 web/mvc 应用程序以使用 StrucutreMap 3.0.4

现在,当尝试在“Line Level Timings, All Methods with Source”或更高级别使用 RedGate Ant 的分析器分析应用程序时,我们收到以下错误

Operation could destabilize the runtime.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Security.VerificationException: Operation could destabilize the runtime.

Source Error: 


Line 174:
Line 175:                            Initialise(context);
Line 176:                            ObjectFactory.Initialize(x => {     x.AddRegistry<BWebsiteIoc>(); });
Line 177:                        }
Line 178:                    }

Source …
Run Code Online (Sandbox Code Playgroud)

ants structuremap3

5
推荐指数
1
解决办法
995
查看次数

ANTS 4 OMP中止错误

我已经下载了ANTS和dotTrace分析器的试用版.

在ANTS中进行性能分析时,在某个时刻程序停止,我在控制台窗口中收到此错误:

系统错误(-2147467259):__ kmp_setaffinity:SetThreadAffinityMask:未指定的错误

OMP中止:检测到致命系统错误.

程序配置文件没有dotTrace中的戏剧..错误是什么意思,它是我的代码或ANTS的问题?

ants

4
推荐指数
1
解决办法
466
查看次数

什么是ANTS Profiler中的时间和命中计数

我开始评估Red Gate的ANTS Profiler来分析我的WPF应用程序.

我阅读了在线支持/文档​​,似乎无法找到基础知识的解释(我不知道为什么它们不在文档中):

在分析器中,它显示方法的时间命中计数.为什么时间单位为%?不应该是第二个吗?我尝试将所有百分比加起来,但它们不加起来为100. 儿童时间也以%为单位,加起来超过100%.我不知道它们是时间还是部分.

Hit Count是什么?什么是"击中"我的应用程序以及重要的是什么?

我知道我听起来非常迟钝,但没有理解时间和命中数我无法阅读论坛或在线帮助.

c# wpf ants

4
推荐指数
2
解决办法
2646
查看次数

从.NET程序中获取全局根

我最近开始使用ANTS分析工具进行生产工作.除了惊讶于他们的精彩之外,我不禁想知道他们是如何工作的.例如,最有用的功能之一允许您可视化正在运行的程序的全局根,其中包含对不同类型值的引用数.

该工具如何获取该信息?

.net c# f# profiling ants

3
推荐指数
1
解决办法
692
查看次数

标签 统计

ants ×7

c# ×4

profiling ×3

.net ×2

performance ×2

wpf ×2

asp.net-mvc ×1

f# ×1

getmessage ×1

structuremap3 ×1