> Это oversimplification.Дудки. Дополнительные проверки для безопасности или есть, и на это тратятся ресурсы, или нет, и тогда они не тратятся. Дядька Тюринг на самом фундаментальному уровне гарантировал нам что мы заранее поведение программы своей программой (как то компилером) целиком не просчитаем - значит оверхед в рантайме на фактические проверки в момент операции. А какие еще варианты? При том в тугом цикле это может угрохать скорость в разы. В кернеле все еще усугубляется тем что нельзя заранее верить компилятору и прочему внешнему миру. Это мигом приведет к взлому, поэтому надо параноидально чикерить все и вся. Без оверхеда куча проверок не бывает - если процессору приваливает работенки, то и времени на ее выполнение приваливает.
> часть он тратит на выполнение кода в ring3, часть он тратит
> на выполнение кода в ring0, часть на ожидание i/o, и часть
> на переключение контекстов из ring3 в ring0 и обратно.
И вот тут хотелось бы какой-то инструментированной метрики с разблюдовкой по временам - куда сколько потрачено и какого масштаба выигрыш ожидается. И не окажется ли это как в песенке про мельника, который истратил шиллинг и заработал грош.
> того, что nginx будет перенесён в ядро. А вот выполнение собственно
> nginx кода и переключение контекстов изменится.
Вот конкретно Linux сейчас довольно здорово оптимизнут на предмет сисколов, с использованием хреновой кучи не-классических техник, придуманых линуксоидами. Например, vDSO, группировка сисколов и 1 переключения контекста на целый батч и проч. Им видите ли оверхед тоже не нравится и они изобрели много нового для его уменьшения.
> что-то быстрее, каким же будет суммарное изменение времени выполнения -- я могу лишь гадать.
В общем случае так. Но сравнивая уровень технологий Linux и тем что вытворяют jit - я пожалуй поставлю на Linux. Эти парни умеют работать так, чтобы результат радовал глаз. А сказать то же самое про jit'ы я не могу.
> Мы это узнаем совершенно точно, когда они запустят nginx в ядре, и
> прогонят его через тесты.
Флаг им.
> Я не знаю, как там насчёт gcc, но rustc сегодня имеет встроенный target webassembly.
А мне похрен на rustc. Пусть яп со встроенными менеджерами пакетов пользуется кто-нибудь другой, а я пешком постою с менее хипстерским/виндообразным тулчейном.
> Emscripten не нужен.
Да и rust куда-то туда же, как по мне.
> модулей ядра -- это другое и не твоё собачье дело решать
> за других, чем им заниматься в своё свободное время.
Несомненно. Но повертеть пальцем у виска, в том числе и публично. я все же могу и это вполне в пределах моего собачьего дела уже.