2011-09-02 87 views
4

我正在使用Silverlight Toolkit for Windows Phone的PerformanceProgressBar控件。 我注意到,一旦顯示了一個帶有PerformanceProgressBar的頁面,仿真器中的CPU即使在IsIndedeterminate/Visibility/Enabled屬性被禁用後,也會達到50%並保持在那裏。即使在不可見的情況下PerformanceProgressBar也會佔用CPU的50%

有沒有人注意到了這一點?

不確定這是模擬器行爲,還是發生在手機上。

在此先感謝。

回答

2

你如何測量模擬器CPU?運行模擬器時只是在測量您的PC CPU嗎?如果是這樣,這不是衡量真實績效的可靠指標。衡量應用性能的更好方法是啓用frame rate counters。特別注意渲染(或合成器)線程和UI線程幀速率。性能進度條不應該對UI線程幀速率產生影響,因爲它的設計可以通過渲染/合成器線程進行更新。

-1

任何基於故事板的動畫(PerformanceProgressBar包含)必須嚴格執行,因爲它在特權線程上運行。如果您想了解更多信息或閱讀有關替代方案,請查看here

有關快速信息請看文章最後的表格。 PerfProgressBar確實帶走了大約50%的CPU,這比標準的ProgressBar(> 60%)好得多,但比其他可能性差得多。

但是:數字指的是設備。在仿真器的情況下,損耗要低得多。至少在我的具體情況下。總的來說,我不會認真對待模擬器上測量的性能數字。

本文中描述的基準應用程序是Resco Mobile Forms Toolkit示例的一部分。該應用程序使用此代碼PerformanceProgressBar:

<ProgressBar Style="{StaticResource PerformanceProgressBar}" 
    Width="250" Margin="0" Padding="10" 
    IsIndeterminate="{Binding ElementName=PerfProgressCheckBox, Path=IsChecked}" 
    Visibility="{Binding ElementName=PerfProgressCheckBox, Path=IsChecked, Converter={StaticResource TrueVis}}" /> 

我可以向你保證,PerfProgressBar不採取而不活動的任何CPU。這在設備和仿真器上都適用。我會在你的代碼中尋找一個問題。

+0

我認爲這個答案是過度複雜的事情。 「表現糟糕」有點苛刻 - 這取決於你想要達到的目標。你想要流暢的動畫,還是低CPU?還說PerformanceProgressBar再次「糟糕得多」取決於你想要達到的目標。我認爲我們可以同意標準ProgressBar不是推薦選項。 –

+1

幾十年來,我一直試圖優化我的進度指標,以少於1%。現在,我必須對高達50%的東西感到滿意。也許我太老了......我當然同意,只有當你的應用程序確實需要CPU時,這些50%纔會立即被觀察到,而情況往往不是這樣。但不必要的電池排水將永遠存在,這也成爲PDA的核心問題之一。 –

+0

否則y是對的,答案是側面跟蹤。我應該只寫下半部分。 –

3

使用PerformanceProgressbar時,不僅應該更改可見性狀態,還應相應地更改IsIndeterminate屬性。如果您將欄可見設置爲IsIndeterminate爲true,如果將其隱藏,請將IsIndeterminate設置爲false。這應該可以解決你的問題。

+0

我其實確實將IsIndeterminate設置爲true。不幸的是,這似乎並沒有成功。讓CPU停機的唯一方法是將控制註釋掉。 –

+0

只需檢查,當隱藏控件時是否也將IsIndeterminate設置爲false?這是必不可少的,隱藏它沒有設置IsIndeterminate爲false將保持佔用CPU –

相關問題