【发布时间】:2010-03-10 21:05:56
【问题描述】:
我有一个 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%。所有这些都是自我时间,即不在这三个中调用的其他方法中。
任何可能导致如此高 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 时间。
需要帮助。
谢谢!
【问题讨论】:
标签: apache-flex flash