Почему делегаты в net 8.0 В разы быстрее 7.0 и в разы быстрее unsafe? Что изменили?
Не могу найти что вообще изменили, в net 8.0. Что интересного нового, кроме того что везде пишут.
И почему делегаты работают на уровне прямых вызов inline функций. И прям в разы разница.
И почему они вообще быстрее unsage delegate? Те то как работали так и работают, а эти ускорились.
Я знаю только одно приложение которое пострадало от резкой быстроты.
Это DOS-овская игра digger. Она нормально шла на 286 тачках и
слишком быстро летала на 486. Просто нельзя было играть. Приходилось
ее тормозить кнопкой Турбо (да была такая).
Интересно почему автору поплохело от скорости. Обычно люди радуются...
mayton2019, было много проограмм на Pascal с модулем crt, в которых происходило на 0 на процессарах с частотой от 200 МГц. Ещё мне попадалась прога для исполнения музыки на PC Speaker с полифонией, в которой высота ноты регулировалась левым и правым Shift, она даже на Pentium 1 так быстро реагировала на Shift, что попасть в нужную высоту было очень тяжело...
так быстро реагировала на Shift, что попасть в нужную высоту было очень тяжело...
полагаю регулировка скорости автоповтора не помогала? )))
по стечению обстоятельств, сам автор драйвера клавиатуры для дос, что то вроде 800 байтов с 3 не сжатыми таблицами... самого всегда поражала, что ну ни кто абсолютно (из ивестных) не использовал int15... )))
.. к скорости реакции на Shift - любое нажатие/отпускание, любой кнопки, вызывает аппаратное прерывание.. штатная обработка:
- изменение "флагов модификаторов"
- изменение раскладки
- все прочее в буфер на очередь, а там скорость реакции на усмотрение ОС
#, в DOS довольно распространённой практикой у подобных приложений было вешаться прям на int9 и дальше уже непонятно как действовать. Может, оно под частоту процессора адаптировалось и крутило какой-то цикл для управления скорости, но частоту таких "супербыстрых" процессоров определяло неправильно? Не знаю. Когда у меня появился Sound Blaster и Impulse Tracker, играть музыку на спикере стало совсем неинтересно.
shurshur, ну да.. именно прямой перехват и имел в виду )))
там скорее прямо меняли громкость не думая о риске высокой скорости проца )))
а о драйвере - так, ностальгия, int9 штатно вызывает одну из функций int15 предназначенную именно для облегчения национальных драйверов
.. там всего то было строк 5 ассемблера в итоге )))
#, дело не в опасениях, int9 это аппаратное прерывание (IRQ1) и от операционной системы оно не зависит, а другие прерывания это API BIOS или операционной системы. У IRQ1 просто есть стандартный обработчик. А все переопределяющие приложения, как правило, запоминали текущее значение, выполняли свои действия и при необходимости вызывали предыдущий обработчик. Поэтому потенциально могло быть несколько разных приложений, которые клавиатуру обслуживали. Например, была популярная программа killer.com, которая по Ctrl-Alt-Del показывала менюшку, в которой текущую прогу можно было прибить (не всегда это было гарантированно безопасно, но для приложений без выкрутасов работало хорошо).
В микропроцессорах Intel 8086/80186 таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний в формате сегмент:смещение. Начиная с процессора 80286, адрес в физической памяти и размер таблицы прерываний определяется 48-битным регистром IDTR.
так и было.. начинали на 8086 )))... так что там можно было жестко перехватить все )))
shurshur, это не к спору.. это конкретная ностальгия..
по моему и мс и кейрус сами и садились на 9...
я перехватывал 15:
- проверял функцию (их там вагон.. 15е сервисное...
- если клавиатурная, проверял комбинации модификаторов на предмет переключения раскладки
- далее раскладку, и либо тихо возвращал управление в оригинал, либо уже помещение в буфер символа.. хм.. а как .. уже не помню.. может даже уже 21е )))
shurshur, биос тогда.. 16 КБ был? (параграф) и в хвосте, по моему аппаратный старт прыгал на его начало.. он инициализировал 0й старт памяти вектором оригиналов.. ну и дальше поиск и загрузка ОС...
1840, драный с секапы, по сути был графической станцией, но на основе своей ос.. и биос там был 1 КБ, тоже в хвосте.. в целом аппаратно выглядело круче икстей, но софта почти и нет...
мы (куратор и я) реализовали эмуляцию биос, с загрузкой дос 3,3..
в основном куратор, я писал демки, потом хачил одну за другой буржуйские программы...
.. а примерно через год сняли эмбарго )))
... думаю и тут мне повезло - "Диалог-Наука", одна из первых 4х точек в стране, таки опять у нас в конторе )))
#, я и 9 и 15 пробовал ковырять, но у меня так ни одного законченного приложения полезного не было.
Зато я написал на батниках (ndos) загрузчик, который умел бутять или Linux в loadlin, или один из разных DOS через файл их бутсектора... Загрузчик имитировал горячую перезагрузку, которую я дизассемблировал из novel dos (в ms dos и pc dos обработчик ctrl-alt-del был слишком сложный).