Информация об изменениях

Сообщение Re[34]: контейнеры от 08.06.2022 14:20

Изменено 08.06.2022 15:16 Pauel

Re[34]: контейнеры
Здравствуйте, Sinclair, Вы писали:

S>Нода тут у нас выступает в роли смелого эксперимента "а занафига нам статик тайпинг, когда мы всё равно большинство ошибок ловим не компилятором, а визуально в браузере".

S>Плюс поверх этого внезапно Хейльсберг достаёт из шляпы кролика со встроенной уткой и так далее — "у нас есть static typing, да ещё и с таким выводом типов, что дотнетчики плачут от зависти!"

S>У меня остаётся некоторый червячок недовольства потому, что виртуальная машина-то там всё равно бестиповая! Это означает, что нода не может пользоваться преимуществами статик тайпинга так, как это делают настоящие компиляторы вроде С++ или дотнета.

S>Понятно, что тормоза начинаются только там, где интенсивные вычисления. А в вебе они у нас где? В известных местах — перекладывание байт в HTTP реквестах и распонсах. Отсюда искушение вынести всё это перекладывание как раз в натив, а прикладной код будет только клеем (здравствуй, нумпи!).
S>Но у меня с давних пор недоверие к билингвальным системам.

Собственно, у меня появилились сомнения после того, как я запилил таки ОДАТА фремворк для Ноды. Хотя мне и удалось существенно обогнать сериализатор дотнета, но потом я узнал, что юзеры имеют обыкновение тащить не 1кб-1мб данных с сервера, а 10 и более мб И без внятной поточности или её эмуляции не обойтись.
Вот здесь жээс хотя и отрабатывает быстрее дотнетного, но морозит эвентлуп. И никаких внятных встроеных средств побороть это нет.
1. webassembly
2. workers
3. async generators

Из всего этого внятно смотрится разве что async generators. Остальные два дают чудовищное усложнение, т.к. одата это конская-конская система, конская-конская метадата. Нету варианта "посчитать кусочек на go в webasm". Придется отдавать в webasm чудовищную порцию функционала. Workers тоже интересная вещь — туда-сюда это пенальти на маршалинг и конские-конские издержки.

Собственно, обработка конских батчей в одата так же равносильна заморозке эвентлупа.

Собственно, как мне кажется, Нода с версии 10 в перформансе особо не продвинулась. От силы, процентов 30 разницы между версиями 10 и 18. Еще недавно в V8 в своё время написали "мы выяснили, что наши оптимизации хорошо справляются с синтетическими тестами и мало чего решают в реальных приложениях"
Собственно, сейчас они начали ускорять сам интерпретатор. Похоже, джит себя исчерпал. Как то так.

Есть вроде бы супер-мега-быстрая just-js, но шота я с ней не экспериментировал. В https://www.techempower.com/benchmarks/ just-js держится довольно высоко. Не проверял, что там за чудо.
Re[34]: контейнеры
Здравствуйте, Sinclair, Вы писали:

S>Нода тут у нас выступает в роли смелого эксперимента "а занафига нам статик тайпинг, когда мы всё равно большинство ошибок ловим не компилятором, а визуально в браузере".

S>Плюс поверх этого внезапно Хейльсберг достаёт из шляпы кролика со встроенной уткой и так далее — "у нас есть static typing, да ещё и с таким выводом типов, что дотнетчики плачут от зависти!"

S>У меня остаётся некоторый червячок недовольства потому, что виртуальная машина-то там всё равно бестиповая! Это означает, что нода не может пользоваться преимуществами статик тайпинга так, как это делают настоящие компиляторы вроде С++ или дотнета.

S>Понятно, что тормоза начинаются только там, где интенсивные вычисления. А в вебе они у нас где? В известных местах — перекладывание байт в HTTP реквестах и распонсах. Отсюда искушение вынести всё это перекладывание как раз в натив, а прикладной код будет только клеем (здравствуй, нумпи!).
S>Но у меня с давних пор недоверие к билингвальным системам.

Собственно, у меня появилились сомнения после того, как я запилил таки ОДАТА фремворк для Ноды. Хотя мне и удалось существенно обогнать сериализатор дотнета, но потом я узнал, что юзеры имеют обыкновение тащить не 1кб-1мб данных с сервера, а 10 и более мб И без внятной поточности или её эмуляции не обойтись.
Вот здесь жээс хотя и отрабатывает быстрее дотнетного, но морозит эвентлуп. И никаких внятных встроеных средств побороть это нет.
1. webassembly
2. workers
3. async generators
4. ????

Из всего этого внятно смотрится разве что async generators. Остальные два дают чудовищное усложнение, т.к. одата это конская-конская система, конская-конская метадата. Нету варианта "посчитать кусочек на go в webasm". Придется отдавать в webasm чудовищную порцию функционала. Workers тоже интересная вещь — туда-сюда это пенальти на маршалинг и конские-конские издержки.

Собственно, обработка конских батчей в одата так же равносильна заморозке эвентлупа.

Собственно, как мне кажется, Нода с версии 10 в перформансе особо не продвинулась. От силы, процентов 30 разницы между версиями 10 и 18. Еще недавно в V8 в своё время написали "мы выяснили, что наши оптимизации хорошо справляются с синтетическими тестами и мало чего решают в реальных приложениях"
Собственно, сейчас они начали ускорять сам интерпретатор. Похоже, джит себя исчерпал. Как то так.

Есть вроде бы супер-мега-быстрая just-js, но шота я с ней не экспериментировал. В https://www.techempower.com/benchmarks/ just-js держится довольно высоко. Не проверял, что там за чудо.