我有一个WPF应用程序。大多数情况下,该应用几乎不使用CPU。这很好。但是我有这个窗口在特定情况下弹出。根据我在Visual Studio中运行的性能分析,我的代码不使用大量的CPU,Application.Run方法是。其中大部分是在“Functon Body”中。调整到40-50%的CPU。如何找出我应用程序中所有CPU的使用情况
我该如何计算CPU的使用量?我有一些动画使用关键帧来动画某些事物的颜色。我想知道他们是否吃了CPU。我知道我可以暂时将它们删除,我可能会,但是还有另外一种方法可以确切知道什么是CPU?
托尼
PS:为了证明自己是动画,我看着我的任务管理器程序的CPU使用率。在带有动画的窗口显示之前,它大约为0。显示的窗口& CPU上升。然后我按了一个按钮,它改变了数据的状态&有停止动画的副作用。 CPU回落到0.我重复了几次,结果一致。看起来这是我的动画。虽然它有可能是与动画同时发生的其他事情。
动画是旨在模拟闪光灯的关键帧动画。我要转储关键帧动画,并使用计时器在两种颜色之间交换填充笔刷颜色。
PS:如果有人有兴趣,我做了一些研究,WPF动画,我发现至少有2个不同的颜色动画关键帧班WPF。我使用的是LinearColorKeyFrame,它可以随着颜色的变化而不断改变颜色,无论你想在动画的持续时间内如何。另一个是DiscreteColorKeyFrame。这立即改变颜色从任何它到任何你想要它。
所以我编辑从这个我的动画:
<Storyboard x:Key="FlashingStoryboard" AutoReverse="True" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="Flasher"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
<LinearColorKeyFrame KeyTime="00:00:00.5"
Value="{Binding Path=FlashColor, RelativeSource={RelativeSource AncestorType={x:Type local:Flasher}}}"/>
</ColorAnimationUsingKeyFrames>
<DoubleAnimation Duration="00:00:00.5"
From="0" To="10"
Storyboard.TargetName="FlasherBlur"
Storyboard.TargetProperty="Radius">
</DoubleAnimation>
</Storyboard>
要这样:
<Storyboard x:Key="FlashingStoryboard" AutoReverse="True" Duration="00:00:00.5" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="Flasher"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
<DiscreteColorKeyFrame KeyTime="00:00:00.25"
Value="{Binding Path=FlashColor, RelativeSource={RelativeSource AncestorType={x:Type local:Flasher}}}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
新的动画使用更少了大量的CPU。事实证明,大部分CPU使用率都被DoubleAnimation占用,而这正在产生发光效果。它用完了几乎1/2的CPU!根本不值得。即使我删除了它,CPU使用率仍然平均约为15%。将其切换到DiscreteKeyFrame将其降至10%以下。
还有一个,类似的动画在同一窗口的列表框动画项目周围的边框。我做了相同的更改,现在CPU使用率可以接受。我不完全确定它是什么,但它比它更好。
谢谢。
抓蚂蚁服务表现探查,游离第2周 – 2012-04-20 18:52:07