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

Сообщение Re[27]: Эльбрус мёртв, да здравствует Эльбрус-Б! от 03.06.2025 13:38

Изменено 03.06.2025 14:31 vdimas

Re[27]: Эльбрус мёртв, да здравствует Эльбрус-Б!
Здравствуйте, ·, Вы писали:

V>>·>Справедливости ради стоит заметить, что в шарпе пришлось унизительно расставлять unsafe да ещё какие-то прагмы для инлайнинга. А в src/Disruptor/Util/InternalUtil.cs вообще какие-то магические коды, почти ассемблерные вставки; правда лень разбираться для чего это.

V>>Это как раз то, что ты просил показать — чтение из нетипизированной памяти массива байт.
·>Я это просил показать в lmax disruptor. Ты так и не смог.

Самому поискать по ByteBuffer не судьба?


V>>Ты чудесно повторил подвиг Синклера — сам себе ответил на свои же донельзя яростные возражения.

·>Ты подменяешь контекст.

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

Невменяемый шлак, кароч.
Это просто несерьёзно, извините.


V>>И да, в дотнете эти ср-ва тоже идут изкаробки, просто этот код написан разработчиками Disruptor, кои в моих глазах недосамоучки, что и показывает твоя ссылка.

·>Ты опять соврал. Этот код не написан разработчиками Disruptor. Разработчики — Martin Thompson и Mike Barker, может ещё пара.

Многовато людей для такой вшивой задачи.
Хотя, если прикола ради сугубо для опенсорса...


V>>·>Такое ощущение, что писать на шарпе high performance можно только из любви к искусству...

V>>Как и на Джаве.
·>Факты говорят о другом.

Факты говорят, что на дотнете писать такой код проще, бо в нём больше вещей, заточенных на низкий уровень.
Джавовский этот AtomicReferenceUpdater, создаваемый через рефлексию — это ж порождение больного воображения.
А рефакторить потом как, с этими символическими именами полей прямо в значениях строк хер знает где в константах? ))


V>>На этих языках окучивают несвойственные этим языкам ниши из-за пресловутой "планки входа", более никаких причин происходящего нет.

·>Фактические причины я уже тут описывал — компромисс между безопасностью и перформансом.

Это оно и есть.
Потому что безопасность требуется вовсе не на уровне реализации Disruptor — это небольшая по объёму кода библиотека, в которой можно обеспечить безопасность относительно задешево...
Безопасность требуется в прикладных колбэках, т.е. в клиентском коде.

Ведь Disruptor вещь не сама в себе, это мидлварь. ))
Т.е. это всегда позиционирование на некий рынок разрабов, увы и ах.
Поэтому, бесполезно пытаться замазать суть происходящего.


V>>я последние лет 12 как раз этим занимаюсь — выжиманием максимума из дотнета,

·>Приношу свои соболезнования. Но тебе ещё повезло, что не из вижуалбасика.

Дык, причины те же, что и в джаве — существование этого рынка.
И этот рынок стал нехило расти с появлением .Net Core (сейчас опять просто .Net называется).

И да, в современном дотнете для этого есть почти все ср-ва, наконец-то.
Почти, угу, я периодически ворчу на нехватку чего-либо, но в сравнении с аховой ситуацией в Джаве жаловаться грех, конечно.

И результат тоже несравним, конечно — в Джаве многое физически невозможно...
Ну или начать оперировать сугубо бестиповыми массивами байт вместо типизированных объектов. ))
Или как в Disruptor — разносить поля объектов по разным массивам (см MultipleProducer), получая несколько круговых буферов вместо одного, из-за отсутствия value-type в языке.

И да, мне несколько похер на обе эти недотехнологии, я тут третья сторона, со мной устраивать срач дотнета vs джавы не надо. ))
Просто бизнес, ничего личного...
И просто свои многолетние наблюдения.
Re[27]: Эльбрус мёртв, да здравствует Эльбрус-Б!
Здравствуйте, ·, Вы писали:

V>>·>Справедливости ради стоит заметить, что в шарпе пришлось унизительно расставлять unsafe да ещё какие-то прагмы для инлайнинга. А в src/Disruptor/Util/InternalUtil.cs вообще какие-то магические коды, почти ассемблерные вставки; правда лень разбираться для чего это.

V>>Это как раз то, что ты просил показать — чтение из нетипизированной памяти массива байт.
·>Я это просил показать в lmax disruptor. Ты так и не смог.

Самому поискать по ByteBuffer не судьба?


V>>Ты чудесно повторил подвиг Синклера — сам себе ответил на свои же донельзя яростные возражения.

·>Ты подменяешь контекст.

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

Невменяемый шлак, кароч.
Это просто несерьёзно, извините.


V>>И да, в дотнете эти ср-ва тоже идут изкаробки, просто этот код написан разработчиками Disruptor, кои в моих глазах недосамоучки, что и показывает твоя ссылка.

·>Ты опять соврал. Этот код не написан разработчиками Disruptor. Разработчики — Martin Thompson и Mike Barker, может ещё пара.

Многовато людей для такой задачи.
Хотя, если прикола ради сугубо для опенсорса...


V>>·>Такое ощущение, что писать на шарпе high performance можно только из любви к искусству...

V>>Как и на Джаве.
·>Факты говорят о другом.

Факты говорят, что на дотнете писать такой код проще, бо в нём больше вещей, заточенных на низкий уровень.
Джавовский этот AtomicReferenceUpdater, создаваемый через рефлексию — это ж порождение больного воображения.
А рефакторить потом как, с этими символическими именами полей прямо в значениях строк хер знает где в константах? ))


V>>На этих языках окучивают несвойственные этим языкам ниши из-за пресловутой "планки входа", более никаких причин происходящего нет.

·>Фактические причины я уже тут описывал — компромисс между безопасностью и перформансом.

Это оно и есть.
Потому что безопасность требуется вовсе не на уровне реализации Disruptor — это небольшая по объёму кода библиотека, в которой можно обеспечить безопасность относительно задешево...
Безопасность требуется в прикладных колбэках, т.е. в клиентском коде.

Ведь Disruptor вещь не сама в себе, это мидлварь. ))
Т.е. это всегда позиционирование на некий рынок разрабов, увы и ах.
Поэтому, бесполезно пытаться замазать суть происходящего.


V>>я последние лет 12 как раз этим занимаюсь — выжиманием максимума из дотнета,

·>Приношу свои соболезнования. Но тебе ещё повезло, что не из вижуалбасика.

Дык, причины те же, что и в джаве — существование этого рынка.
И этот рынок стал нехило расти с появлением .Net Core (сейчас опять просто .Net называется).

И да, в современном дотнете для этого есть почти все ср-ва, наконец-то.
Почти, угу, я периодически ворчу на нехватку чего-либо, но в сравнении с аховой ситуацией в Джаве жаловаться грех, конечно.

И результат тоже несравним, конечно — в Джаве многое физически невозможно...
Ну или начать оперировать сугубо бестиповыми массивами байт вместо типизированных объектов. ))
Или как в Disruptor — разносить поля объектов по разным массивам (см MultipleProducer), получая несколько круговых буферов вместо одного, из-за отсутствия value-type в языке.

И да, мне несколько похер на обе эти недотехнологии, я тут третья сторона, со мной устраивать срач дотнета vs джавы не надо. ))
Просто бизнес, ничего личного...
И просто свои многолетние наблюдения.