Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ListBoxDragDropTarget(Silverlight Toolkit)上调试性能问题?_C#_Silverlight_Debugging_Silverlight 4.0 - Fatal编程技术网

C# 在ListBoxDragDropTarget(Silverlight Toolkit)上调试性能问题?

C# 在ListBoxDragDropTarget(Silverlight Toolkit)上调试性能问题?,c#,silverlight,debugging,silverlight-4.0,C#,Silverlight,Debugging,Silverlight 4.0,我有一个使用SilverLight Toolkit的ListBoxDragDropTarget进行拖放操作的复杂项目,它正在最大化CPU。我试图在一个小样本项目中重现这个问题,但效果很好。当我从页面中删除自定义样式和所有其他控件,但页面托管在另一个页面的滚动视图中时,问题仍然存在 “EnableRedrawRegions”显示屏幕在每一帧上都会被重绘。我的问题是:我如何找到这种不断重画的原因?我曾经帮助跟踪与Silverlight中重画相关的性能问题。这不是一个完全直接或简单的过程,但它可以帮助

我有一个使用SilverLight Toolkit的ListBoxDragDropTarget进行拖放操作的复杂项目,它正在最大化CPU。我试图在一个小样本项目中重现这个问题,但效果很好。当我从页面中删除自定义样式和所有其他控件,但页面托管在另一个页面的滚动视图中时,问题仍然存在

“EnableRedrawRegions”显示屏幕在每一帧上都会被重绘。我的问题是:我如何找到这种不断重画的原因?

我曾经帮助跟踪与Silverlight中重画相关的性能问题。这不是一个完全直接或简单的过程,但它可以帮助您指出问题所在的正确方向

我从一个关于使用XPerf命令行工具来分析Silverlight应用程序的CPU使用情况的例子开始。您基本上可以加载应用程序,开始使用XPerf进行采样,执行CPU密集型操作,然后停止采样并分析XPerf生成的配置文件。当您查看XPerf图表时,您可以选择“可以通过某些进程(如iexplorer或您的浏览器)进行筛选”,以查看总CPU百分比。然后,您可以在配置文件中选择特定的时间长度,并深入查看DLL占用最多CPU周期的功能。如果将XPerf指向Microsoft的symbol server,则应获得应用程序大部分时间使用的函数的具体名称

对于Silverlight应用程序,最重要的是查看agcore.dll、npctrl.dll和coreclr.dll中的情况。如果您的性能问题与重画有关,那么大部分CPU时间可能都花在agcore.dll上,因为Silverlight的大部分图形相关工作都是在agcore.dll上完成的。然后,您可以深入其中,查看agcore.dll中在采样期间最常调用的特定函数

我理解这是一种恼人的调试方式,因为您只能真正看到核心Silverlight函数中发生了什么,但它可能会帮助您了解发生了什么。在我的例子中,我可以看到大部分时间都花在计算agcore.dll中的阴影上。然后我才发现,我愚蠢地在一个阴影效果中包含了一些内容,这些内容每秒会发生多次变化,并导致不断地重新计算/重画整个阴影效果


一旦您确定了重绘问题,您可能希望使用BitmapCaching进行研究(如果您还没有这样做的话)。这将有助于将一些重绘工作卸载到GPU,并节省一些CPU周期。

我还看到ListBoxDragDropTarget的性能非常糟糕。你能弄明白吗?别客气。我从其中一位家长身上移除了阴影效果。