2010-03-10 58 views
0

我有一個Flex應用程序。令人驚訝的是,當我的筆記本電腦上運行時,它使我的CPU保持在〜50%的負載(它在40%和60%之間波動)。該筆記本電腦是一個4歲的戴爾模型 - CPU是Intel T1350 @ 1.86GH。奇怪的是,即使它沒有做任何事情,應用程序仍然保持我的CPU爲50%。它是一個靜態的,相當複雜的Flex屏幕。我沒有運行效果,沒有服務器通信,沒有動畫。當然,它有效果和類似的動態行爲,但在這個測試中,我沒有碰它。我只是加載它,它保持靜態,但仍然是CPU的50%。 當然,我介紹了應用程序,但它並沒有給我很多有用的信息。我甚至在瀏覽器被另一個窗口隱藏的情況下對應用程序進行了剖析(仍然CPU很高),大部分時間都用在了這三個項目中:Timer.tick - 54.5%,[enterFrameEvent] - 21.5%和[reap] - 12.5%。所有這些都是自我時代,即不在這三種情況下調用的其他方法。Flex應用程序的高CPU使用率

任何想法可能會導致如此高的CPU使用率非常歡迎。 ...或接近如何確定根本原因。

附加信息: 當我的開發機器(CPU Intel Core 2 Quad Q6600 @ 2.4 GH)上運行相同的應用程序時,利用率下降到16%,因爲CPU速度快了幾倍,但仍然太多用於靜態屏幕和這個快速的CPU。另外,如果我用IE運行它(上面所有的數字都是FF),那麼CPU利用率接近0%。我猜ActiveX Flash播放器版本通過將工作委託給GPU(我的視頻卡)來卸載CPU,但這隻適用於IE +良好視頻卡的情況,這不是我可以爲大多數用戶做出的假設。

我也注意到,提高FPS高達60(以上數字是默認24 FPS)這並不能真正改變了CPU的負載。將FPS降低到12會減少CPU負載,但不成比例,這不能解決這個問題。

我傾向於認爲這個問題是關係到UI層次我。它可能對於Flash播放器來說太複雜和/或嵌套,但是爲什麼當屏幕完全靜止時應該花費CPU時間。

需要幫助。

謝謝!

回答

0

一些想法。

  1. 避免嵌套在可能情況下,深層次的UI會導致渲染變慢
  2. 僅添加元素需要繪製階段,離場景元素也將放慢渲染。
  3. 如果你確實有很多小部件,你可能不需要渲染/初始化所有這些小部件。

但是,我不明白爲什麼(1)或(3)上面會涉及到FPS。你在畫什麼?

0

我撇清了你的問題,看到你提到了Timer類。如果您在運行應用程序的整個過程中使用計時器,那很酷。

然而,有,你沒有一個計時器和removeEventListener一個非常好的機會(作爲剛剛在的情況下)沒有設置定時器= NULL,你用它完成之後。根據您使用計時器對象的方式,您也可以重複循環並創建新的計時器實例。結合沒有removeEventListener被調用,大量的計時器實例可能永遠不會被垃圾收集。

只是一個潛在的問題,我發現。 祝你好運。