【发布时间】:2009-02-02 07:57:39
【问题描述】:
你们所有的 Stackoverflowers,
我想知道为什么 GUI 代码会占用很多很多 CPU 周期。原则上,图形渲染远没有 Doom 复杂(尽管大多数公司的 GUI 会引入大量的装饰)。事件处理层似乎也是一个沉重的成本,然而,一个编写良好的实现似乎应该在具有大量内存/缓存的现代处理器上有效地在上下文之间切换。
如果有人在他们的大型 GUI 应用程序或通用 API 本身上运行了分析器,我会对瓶颈所在的位置感兴趣。
可能的解释(我想象的)可能是:
- 硬件和应用程序接口之间的高级抽象
- 对要执行的正确代码的许多间接级别
- 低优先级(与其他进程相比)
- 行为不端的应用程序通过调用淹没 API
- 过度面向对象?
- 在 API 中完成糟糕的设计选择(不仅仅是问题,还有设计理念)
一些 GUI 框架比其他框架好得多,所以我想听听不同的观点。例如,Unix/X11 系统与 Windows 甚至与 WinForms 有很大不同。
编辑:现在是一个社区 wiki - 去吧。我还有一件事要补充——我是学校里的一名算法专家,如果 GUI 代码中存在低效的算法以及它们是什么算法,我会很感兴趣。再说一次,这可能只是实现开销。
【问题讨论】:
-
我对此也很感兴趣。不能只使用 cpu 渲染 gui,因为如果您的 gfx 卡没有合适的驱动程序,桌面图形渲染速度难以置信。如果您有 gfx 驱动程序,但是 desktop-gfx 运行速度有点快,但永远不会像 directx/opengl 应用程序那样快。
-
唯一可能很慢的算法是软件渲染算法,但 GUI 正在远离它
标签: user-interface language-agnostic