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

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

Страницы: 122 23 24 2529 Следующая »
#330
(Правка: 1:19) 1:18, 15 мая 2021

В данный момент ОС берет на себя буферизацию сообщений. При ином подходе придется либо городить собственную буферизацию, либо усложнять модель запроса сообщений


#331
(Правка: 2:48) 2:45, 15 мая 2021

foxes
> Оптимизируется оно процедурным деревом.

Как оно оптимзирируется я рассказывал десятка два страниц назад (собственно должно было насторожить уже то, что в самом первопосте я писал не про "оптимизации", а про "сильные оптимизации"), конкретное рассмотрение чего генерирует компилятор в switch-ах было страницы 3-4 назад.
Чётко было продемонстрировано, что оптимизирующий компилятор ужас как не любит бинарный поиск и при малейшей возможности старается его заменить (даже частично) на табличную выборку.

#332
4:41, 15 мая 2021

Меня интересует такой вопрос: Предположим если приложение передаст ОСи указатели на обработчики событий.
ОС должна будет где-то их хранить, в какой-то таблице.
А как она будет делать выборку что бы найти указатель среди зарегистрированных приложений и зарегистрированных событий? Не будет ли это еще более длительный процесс, чем так как реализовано сейчас?

#333
5:14, 15 мая 2021

NetSpider
> Не будет ли это еще более длительный процесс, чем так как реализовано сейчас?

Так это и зависит от реализации.

#334
(Правка: 17:29) 17:01, 15 мая 2021

=A=L=X=
> Чётко было продемонстрировано, что оптимизирующий компилятор ужас как не любит
> бинарный поиск и при малейшей возможности старается его заменить (даже
> частично) на табличную выборку.
То как оптимизирует компилятор и то на что можно поменять этот самый свич - это не одно и тоже. Где ты видел фреймворк с тонной обработок всех типов сообщений? Там в корне 5 кейсов, объединяющих сообщения по категориям, графика, ввод/вывод, и тд.
=A=L=X=
> а про "сильные оптимизации"
20 тактов на выборку из 1000 типов сообщений для тебя медленно?
И как я уже описал ранее основная проблема это далеко не свич. И до меня это уже тебе писали. В целом какая-то оптимизация сферического коне в вакууме.
=A=L=X=
> собственно должно было насторожить уже то
Тебя не насторожило то что я с самого начала систему свича в своем примере ни где не использовал, а лишь упомянул как присказку для текущего варианта?

#335
18:05, 15 мая 2021

foxes
> 20 тактов на выборку из 1000 типов сообщений для тебя медленно?

Для кого? Для меня? А что думает по этому поводу оптимизирующий компилятор?

+ Показать
#336
(Правка: 19:39) 19:38, 15 мая 2021

Немногo оффтопа…

Уж сотню раз думал над тем, что если бы порт клавиатуры #96 развернули тогда в целый i8086-сегмент в 16 байт?
Ясно дело, 16 байт - 128 бит. Иными словами, маска активности клавиш.
Тогда не было ограничений на количество одновременно нажатых клавиш и это укладывалось бы в один XMM-регистр SEE.

Все стандарты писали коленом с колена да на колене…

+ Показать

P.S.: Это я к тому, что весь Hi-Tech давным-давно нуждается в жосткой перезагрузке.
Именно «жосткой», а не «жёсткой».

#337
23:18, 15 мая 2021

Alikberov
> Тогда не было ограничений на количество одновременно нажатых клавиш
в этой теме как раз обсудили, что ограничения на количество нажатых клавиш нет. Есть только аппаратные ограничения конкретных моделей клавиатур

#338
23:53, 15 мая 2021

=A=L=X=
Ты там определись что мы обсуждаем. Производительность или удобство использования? Потому как тебе начинаешь объяснять что производительность этого места это дай бог 0.0001% от всего рабочего кода - ты начинаешь заливать, что мол мы не производительность обсуждаем. Начинаем обсуждать за дизайн - ты начинаешь заливать про производительность.

#339
4:22, 16 мая 2021

MrShoor
> Ты там определись что мы обсуждаем.

В первопосте всё написано - просто внимательно читать надо.

+ Показать

#340
(Правка: 4:28) 4:27, 16 мая 2021

MrShoor
> начинаешь заливать, что мол мы не производительность обсуждаем. Начинаем
> обсуждать за дизайн - ты начинаешь заливать про производительность
Это как раз непонимание что обсуждается. Я заливаю про "то как сделать лучше". Лучше на 0,001% это всё равно по факту лучше. Это просто движение в сторону которой индустрия во всякий IEventListener движется уже 30 лет и это настолько же естественно как уметь программировать.
Пытаться оправдывать косяки дизайнов прошлых лет тем что "да и так сойдёт" - это всё равно что жить в говне, жрать говно и быть довольной свинкой которая хавает говно и причитает, что говно это хоть и невкусно, хоть и тошнит и всё время хочется блевануть говном же, но ведь для жизни хватает и в целом все уже попривыкли, норм, ну чё?
Давайте теперь жрать говно и сделаем язык программирования где switch - единственная управляющая структура. Его всем хватит и даже циклы на switch по числу кейсов компилятор соптимизирует. Так язык и назовём - ГовноСвитч!

#341
4:30, 16 мая 2021

есть пара идей, но только при личном разговоре. с глазу на глаз.

#342
(Правка: 4:52) 4:37, 16 мая 2021

=A=L=X=
> Давайте теперь жрать говно и сделаем язык программирования где switch - единственная управляющая структура.
> Так язык и назовём - ГовноСвитч!
ахаха... это же WebAssembly (даже не язык, а машина)
там единственная управляющая структура это BLOCK
и на ней делаются и циклы, и IF-ы
...и людям таки плохо заходит! (есть петиция и нестандарт за неконтролируемые переходы аля goto X)

#343
4:59, 16 мая 2021

skalogryz
> ахаха... это же WebAssembly (даже не язык, а машина)
> там единственная управляющая структура это BLOCK

Эээ... https://www.webassemblyman.com/webassembly_control_flow.html

WebAssembly control flow is expressed in structured instructions such as if, else, br, loop, return and block. Below is a list of the instructions.

    if - The beginning of an if instruction.
    then - The then block of an if instruction.
    else - The else block of an if instruction.
    loop - A labeled block used to create loops.
    block - A sequence of instructions, often used within expressions.
    br - Branch to the given label in a containing instruction or block.
    br_if - Identical to a branch, but with a prerequisite condition.
    br_table - Branches, but instead of to a label it jumps to a function index in a table.
    return - Returns a value from the instruction.
    end - Marks the end of a block, loop, if, or a function.
    nop - An operation that does nothing.


Выглядит так как будто бы нет.

#344
(Правка: 5:09) 5:07, 16 мая 2021

=A=L=X=
> Выглядит так как будто бы нет.
это потому что в синтаксис язык смотришь
под капотом это звучит так:

The block, loop and if instructions are structured instructions. They bracket nested sequences of instructions, called blocks, terminated with, or separated by, end or else pseudo-instructions. As the grammar prescribes, they must be well-nested.

сама-суть, конечно, не в том, чтобы всё можно было на switch-е написать, а чтобы можно было гарантировать "правильность" кода.
Каждый переход кода контролируются без его непосредственного выполнения. Безопасности ради.
Страницы: 122 23 24 2529 Следующая »
ФлеймФорумПрограммирование