我有一個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