Все, что вам нужно,
Мне было интересно, почему GUI-код отвечает за сосание многих, многих циклов процессора. В принципе, графический рендеринг намного менее сложный, чем Doom (хотя большинство корпоративных графических интерфейсов предложат много оформления оформления). Слой обработки событий также, по-видимому, очень дорог, однако кажется, что хорошо написанная реализация должна эффективно переключаться между контекстами на современных процессорах с большим количеством памяти/кеша.
Если кто-то запустил профилировщик в своем большом приложении GUI или сам общий API, я заинтересован в том, где лежат узкие места.
Возможные объяснения (я думаю) могут быть:
- Высокие уровни абстракции между аппаратным и прикладным интерфейсом
- Множество уровней косвенности для правильного кода для выполнения
- Низкий приоритет (по сравнению с другими процессами)
- Неисправность приложений API для наводнения с помощью вызовов
- Чрезмерная ориентация объекта?
- Полный бедный выбор дизайна в API (не только проблемы, но и философия дизайна).
Некоторые графические интерфейсы намного лучше других, поэтому я хотел бы услышать разные перспективы. Например, система Unix/X11 сильно отличается от Windows и даже WinForms.
Изменить: Теперь сообщество wiki - подойдет для этого. У меня есть еще одна вещь, которую я хочу добавить: я парень-алгоритм в школе, и мне было бы интересно, если в коде GUI есть неэффективные алгоритмы и какие они есть. Опять же, это, вероятно, просто накладные расходы на реализацию.