Я должен не согласиться с (до сих пор) 2 другими респондентами, которые утверждают, что насос сообщений MFC менее производительный просто потому, что он оборачивает простые старые насосы сообщений C: MFC использует совершенно другую технику, чем простой процесс окна, содержащий гигантский оператор коммутатора (сообщения).
Насос сообщений MFC действительно полагается на цикл сообщений Win32 (он должен). Но реализация очень отличается: на основе хуков, диспетчеризация сообщений обрабатывается внутри MFC, а не полагается на API DispatchMessage ().
MFC использует карты для сопоставления сообщений с обработчиками: O (log n). С этой точки зрения, могут быть случаи, когда это быстрее, чем большой и плохо скомпилированный оператор переключателя (сообщения): O (n).
Кроме того, может быть быстрее определить правильный объект окна, чем DispatchMessage (), который мы не можем знать наверняка, поскольку Windows не является открытым исходным кодом.
Это, однако, маловероятно, особенно принимая во внимание дополнительный код, такой как маршрутизация команд, обработка в режиме ожидания и различные угловые случаи, обрабатываемые кодом MFC ... и тот факт, что компиляторы достаточно умны, чтобы эффективно реализовывать большие switch()
заявления!
При этом снижение производительности не считается значительным уже более 15 лет.