jyraf-core | easy, reactive, thread-safe, fast

jyraf-core | easy, reactive, thread-safe, fast 1.24.2-SNAPSHOT

Нет прав для скачивания

CKATEPTb

Пользователь
Сообщения
12
CKATEPTb добавил(а) новый ресурс:

jyraf-core | easy, reactive, thread-safe, fast - Ваш ассистент в разработке высокопроизводительных плагинов покрывающий множество аспектов.

На данный момент этот ресурс является черновиком для привлечения внимания.
Всю информацию о плагине смотрите в sources и wiki.
На первый взгляд может показаться что это очередная библиотека, коих множество на сегодняшний день или же очередная "солянка", однако это вовсе не так.
Библиотека пропагандирует паттерн реактивного программирования и содержит реализации множества необходимых фич для быстрого написания плагинов (смотрите readme на github)

Узнать больше об этом ресурсе...
 
Милости прошу вашей критики для мотивации развивать библиотеку.
 
Оформите описание ресурса (пункт правил 4.2).
 
Милости прошу вашей критики для мотивации развивать библиотеку.
1) Где javadoc?
2) Сомневаюсь что разумно тянуть 250 элементов, некоторые из которых до кучи взаимозаменяемые
3) Некоторые модули сомнительные и не могут использовать JIT
4) Отдельного леща заслуживает то, что полно пакетов из 1-го класса
 
Последнее редактирование:
Оформите описание ресурса (пункт правил 4.2).
Привет, в течении нескольких дней сделаю.
1) Где javadoc?
2) Сомневаюсь что разумно тянуть 250 элементов, некоторые из которых до кучи взаимозаменяемые
3) Некоторые модули сомнительные и не могут использовать JIT
4) Отдельного леща заслуживает то, что полно пакетов из 1-го класса
Привет!
1. javadoc пока отсутствует, и будет доступен после релиза.
2. Сделай пожалуйста уточнение, пока не особо понимаю о каких конкретно "элементах" идет речь.
3. Тоже хотелось бы уточнений, чтобы я разобрался.
4. Ну тут оставлю без комментариев ибо изменений не будет.
 
Привет, в течении нескольких дней сделаю.

Привет!
1. javadoc пока отсутствует, и будет доступен после релиза.
2. Сделай пожалуйста уточнение, пока не особо понимаю о каких конкретно "элементах" идет речь.
3. Тоже хотелось бы уточнений, чтобы я разобрался.
4. Ну тут оставлю без комментариев ибо изменений не будет.
Я бы не стал использовать что-либо без javadoc, без крайней на то необходимости

Нахрена кучу различных типов конфигураций и БД лепить?

Оно сломает JIT
А это просто переполнено виртуальными вызовами, ты в профайлере это вообще проверял? Остается только молится, что это не будет вызываться часто - без нормальной javadoc не понятно
 
Последнее редактирование:
Нахрена кучу различных типов конфигураций и БД лепить?
Задача либы чтобы все всегда было под рукой, что особенно помогает ребятам, которые делают что-то под заказ.
В качестве оправдания есть весомый факт, что классы без нужды в ClassLoader не попадут, ведь IoC имеет фильтр по пакетам, соответственно, если тот же Mongo не требуется, он и не попадет в ClassLoader.
Оно сломает JIT
А это просто переполнено виртуальными вызовами, ты в профайлере это вообще проверял? Остается только молится, что это не будет вызываться часто - без нормальной javadoc не понятно
ImmutableVector проверен годами, на нескольких версиях, начиная с 1.12.2 и заканчивая 1.20.4. Никаких нареканий нет.

По поводу Collider'ов, у меня есть кейс где вызывается динамическое количество различных коллайдеров каждый тик (в среднем это 50-100 расчетов пересечения в тик) что само по себе является накладными расчетами и я долгое время боролся с оптимизацией. Сейчас же, по Spark, это вовсе не вызывает просадков по TPS, обрабатывается шустро. Да, конечно если коллайдеры будут огромных размеров, то это может вызвать проблемы (без этого никуда), но и эта проблема решается, ведь коллайдеры полностью потокобезопасны.
 
В качестве оправдания есть весомый факт, что классы без нужды в ClassLoader не попадут
Куча неиспользуемого кода раздувает размер jar-ника. 30% неиспользуемого уже плохо - а у тебя чуть ли не 80%+ (наверное)

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

ImmutableVector проверен годами, на нескольких версиях
Знаю я этот ваше проверен - forge 1.12.2 проверен годами, и начиная с 1.1 вплоть до 2.3.8.25 я нахожу его косяки. 1 из этих косяков очень похож на этот случай.
 
Последнее редактирование модератором:
Куча неиспользуемого кода раздувает размер jar-ника. 30% неиспользуемого уже плохо - а у тебя чуть ли не 80%+ (наверное)


Он не дает полных данных, над которыми можно было бы работать.


Забавно, что для Эльки 0.3м "вызовов расчетов пересечения" в тик не вызовет замедлений (Проблемы начинаются после 2м и просадка ТПС после 5м)


Знаю я этот ваше проверен - forge 1.12.2 проверен годами, и начиная с 1.1 вплоть до 2.3.8.25 я нахожу его косяки. 1 из этих косяков очень похож на этот случай.
По поводу размера jar, никто не отменял minify в proguard'a или shadow. Если кто-то переживает про размер, то может ни в чем себе не отказывать.

По поводу неполноты картины Spark согласен, я указал его как пример. Прогоняется все через VisualVM, Timings и Spark, если ты хотел более развернутого ответа.

Я не знаю как мне реагировать на придирку к ImmutableVector, пока проблем не всплывало, когда/если начнут всплывать, будем исправлять.

Не совсем понял сравнение с "Элькой", ибо толком не знаю о чем речь (прочитал только что твой ресурс). Ты говоришь про AABB или про остальные коллайдеры тоже? Насколько мне известно, в майне кроме AABB ничего нет (сферу не учитываем, в меру ее простоты), а Ray в реализации майне вовсе не считается коллайдером. Сам по себе AABB не накладный в проверках пересечения. Уточни пожалуйста что ты имеешь ввиду.
 
По поводу размера jar, никто не отменял minify в proguard'a или shadow. Если кто-то переживает про размер, то может ни в чем себе не отказывать.
Сначала добавлять неиспользуемые зависимости, а потом убирать - гениально. Ладно проехали.

Ты говоришь про AABB или про остальные коллайдеры тоже?
У тебя JIT не будет работать на всем модуле. Повторю еще раз. Куча. Нет прям дохренище вызовов виртуальных методов. Плодишь виртуальные вызовы, там где их могло бы быть не больше 1-го, или не быть вовсе. Тоже самое с ImmutableVector.

В голой ваниле таких проблем с JIT нет, что уж там ...

А это я вообще отказываюсь комментировать
 
Последнее редактирование:
У тебя JIT не будет работать на всем модуле. Повторю еще раз. Куча. Нет прям дохренище вызовов виртуальных методов. Плодишь виртуальные вызовы, там где их могло бы быть не больше 1-го, или не быть вовсе. Тоже самое с ImmutableVector.

А это я вообще отказываюсь комментировать
Я все равно не понимаю придирку. Если будет желание объяснить в конкретике что, почему и как нужно, тогда можно будет продолжить дискуссию.

По поводу сравнения с Elca, ты конечно молодец что похвастался, но сравнение максимально неуместное.
Collider предоставляемый jyraf-core позволяет получить список entity/block попадающих в его диапазон или же проверить пересекается ли тот с другим collider'ом. Если я правильно понял, то ты сравнил это с системой коллизий между entity в minecraft, что абсолютно не имеет никакого смысла и даже если ты захотел сравнивать, то результат очень сильно зависит от множества факторов, включая кол-во entity и block.

Чтобы не оклеветать твою компетентность, соответственно в твою защиту, осмелюсь предположить что ты не понял изначальное назначение Collider в меру отсутствия того же javadoc.
 
Тоже самое с ImmutableVector.
У ImmutableVector 2 критерия: bukkit вектор; immuttable. Вовсе не понимаю какой реализации от него ты ожидаешь.
Сначала добавлять неиспользуемые зависимости, а потом убирать - гениально. Ладно проехали
Споры о монолите были, есть и будут всегда. Модульность выигрывает и для меня, но назначение библиотеки покрыть большинство аспектов при современной разработке плагинов. К тому же, как я уже упоминал ранее, излишки не попадут в classloader без необходимости. Minify (как тоже упоминалось ранее), никто не отменял. К чему ты ведешь, что мне стоит сделать динамическую подгрузку зависимостей, чтобы уменьшить банку? У библиотеки нет единого назначения, это как фреймворк покрывающий большинство часто используемого.
А это я вообще отказываюсь комментировать
Если речь о том, что нет какого-то registry для пересечений между разными типами collider'ов, то тут согласен. Необходимо сделать и в дальнейшем обязательно будет.
 
Если я правильно понял, то ты сравнил это с системой коллизий между entity
Collider предоставляемый jyraf-core позволяет получить список entity/block попадающих в его диапазон
Держу в курсе, именно так оно и работает в ваниле. Только быстрее.

Entity -> его AABB -> Запрос к миру -> Запрос к чанкам -> Запрос к вертикальным частям -> Выборка сущностей по условию.

В ИИ - то же самое, только AABB не в 2 блока а в 32 или больше

С блоками в ваниле - аналогично, только возвращаются не они сами а их хитбоксы
Entity -> его AABB -> Запрос к миру -> Запрос к чанкам -> Запрос к вертикальным частям -> Запрос к массиву бит -> Запрос к палитре блоков -> Запрос всех AABB у конкретного состояния блока
 
именно так оно и работает в ваниле
В майне только AABB и тот не thread-safe.
Только быстрее.
Вот тут конечно ты здорово придумал сказать без тестов.
Я проводил тестирование и по скорости мой ничем не уступает ванильному.
 
HomaPlus
Давай немного обрисуем ситуацию, чтобы не выводить дискуссию в спор, тем более что с твоей стороны уже пошла клевета.
Критика должна быть с конкретикой, пока во всем что ты написал нет никакого смысла.
Максимум что я вынес за дискуссию в несколько таких сообщений, так это "отсутствие registry в Сollider#intersects", который уже был у меня в планах, но не суть и что-то там про JIT (только я не понял как вектор его сломает). Все остальное - пустышка.
 
Давай немного обрисуем ситуацию, чтобы не выводить дискуссию в спор, тем более что с твоей стороны уже пошла клевета.
Держу в курсе, именно так оно и работает в ваниле.
Никакой клветы. Це факт.

Я проводил тестирование и по скорости мой ничем не уступает ванильному.
Очень удивлен. Как минимум потому что в 25-тый раз повторюсь куча дополнительных виртуальных вызовов, которых могло бы и не быть. А под капотом все тот же ванильный
Ладно, не буду докапываться - тебе же этим пользоваться в конце концов.

Все остальное - пустышка.
Я указал свое субьективное мнение, как человек, который собаку сьел в плане оптимизации. Прислушиваться моим рекомендациям - дело твое.
3) Некоторые модули сомнительные и не могут использовать JIT
 
Назад
Сверху Снизу