Войти
ФлеймФорумПрограммирование

Если бы вы писали WinAPI - как бы вы рассылали сообщения окнам? (4 стр)

Страницы: 13 4 5 629 Следующая »
#45
17:29, 10 мая 2021

clc
> если сделать свитч по перечислению, то скорее всего компилятор сделает
> правильно

Да 10 раз там проговаривалось, что пространство WM_MESSAGE это тысячи вариантом емума.
Давай сделай свитч по дереву и так далее а потом удивляйся почему он не оптимален когда появляются новые варианты.
Это же вроде просто всё - азы алгоритмики с классов обучения...


#46
17:31, 10 мая 2021

Но вообще мне кажется, что =A=L=X= озаботился совершенно несущественной стороной WinAPI. Имхо, основные тормоза исользования WinAPI вовсе не в свитчах, а в закулисной проверке регионов. Как со стороны ввода (проверка, к какому конкретно окну должны уйти сообщения мыши), так и со стороны рендера (проверка пересечения рисуемых примитивов с инвалидированным регионом). Причем вполне могли быть "злостные" обработчики WM_PAINT, которые не заморачивались вообще проверкой видимой области, а просто тупо рисовали "всю карту", полагаясь на то, что GDI все равно обрежет по инвалидированному региону.

#47
(Правка: 17:34) 17:33, 10 мая 2021

=A=L=X=
> Да 10 раз там проговаривалось, что пространство WM_MESSAGE это тысячи вариантом
> емума.

Не забывай, что в конкретном свитче у тебя задействованы вовсе не все возможные варианты, а ограниченные. И скорей всего они могут оказаться кластеризованы. Кластеризация бранчами по минимуму/максимуму каждого кластера, и итоговая таблица для каждого кластера размером (максимум минус минимум).

#48
17:37, 10 мая 2021

У меня такое чувство, что оппоненты специально тупят, чтобы тема поскорее сползла в крестопроблемы, и можно было бы полностью отрешиться от реальности, начав сыпать за парадигмы абстрагирования.

#49
17:38, 10 мая 2021

Dmitry_Milk
> могли быть "злостные" обработчики WM_PAINT

Не могли, а были.
Потому что по честному перерисовать произвольный кусок сцены, а не всю сцену целиком это геморрой высшей степени.

#50
17:39, 10 мая 2021

=A=L=X=, ты хочешь сказать, что компилятор устанет? :)

#51
17:39, 10 мая 2021

clc
> как обычно: поллингом для основного окна (скорее всего, деталями никогда не
> интересовался)
полигон для основного окна это дай боже два сообщения wm_paint и wm_ncpaint
а gtk это ещё и обработка ввода пользователя

#52
17:42, 10 мая 2021

skalogryz, нет, там несколько больше сообщений

#53
17:45, 10 мая 2021

clc
> skalogryz, нет, там несколько больше сообщений
да конечно. и gtk при своему реализации под WinAPI умудряется обходить:
clc
> системный кольцевой буфер сообщений - уже есть ограничения.

#54
17:47, 10 мая 2021

skalogryz, ты не понимаешь разницу между тулкитом gtk и оконной системой венды. Разные подходы из-за особенностей реализации оси.

#55
17:48, 10 мая 2021

clc
> skalogryz, ты не понимаешь разницу между тулкитом gtk и оконной системой венды.
> Разные подходы из-за особенностей реализации оси.
я понимю, что gtk работает под Винду.
ты сказал, что есть какие-то там органичения... а я любопытствую как они смогли их обойти.
или они не смогли их обойти?

#56
(Правка: 20:53) 20:50, 10 мая 2021

skalogryz
> и gtk при своему реализации под WinAPI умудряется обходить:
>clc
> > системный кольцевой буфер сообщений - уже есть ограничения.
clc
> ты не понимаешь разницу между тулкитом gtk и оконной системой венды. Разные
> подходы из-за особенностей реализации оси.
Извиняюсь, что?

В чём собственно проблема, gtk и WinApi не совместимы?
Почему я, ползая в исходниках Lazarus-а постоянно натыкаюсь на WndProc?

#57
22:00, 10 мая 2021

в моих постах нет противоречий, они не взаимоисключают друг друга
пояснял лишь разницу в реализации событийных систем

#58
2:52, 11 мая 2021

Автору темы уже сказали, что компиляторы прекрасно оптимизируют гигантские свитчи, и что он вообще о какой-то херне парится?

#59
(Правка: 5:26) 5:10, 11 мая 2021

BUzer
> Автору темы уже сказали, что компиляторы прекрасно оптимизируют гигантские
> свитчи

Алгоритмика говорит обратное.
Пространство WM_* - это сотни или даже тысячи вариантов и нужные идут не по порядку.
Значит в лучше случае компилятору придётся сделать бинарный поиск понятия не имея какие варианты встречаются чаще других.
Липовые оптимизации там где можно просто сделать call - это хреновато.
Сейчас не учат что ли таким вещам?
Про то как хреново ошибиться предсказателю переходов - не учат уже?
А если вспоминать про компиляторы конца 80-х когда всё это создавалось - то скулы сводит.
Где 10000 нарисованных окон за 10мс?

Страницы: 13 4 5 629 Следующая »
ФлеймФорумПрограммирование