- Баллы
- 173
А это каким образом?Незначительное снижение нагрузки на сеть и дисковую систему пользователя.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
А это каким образом?Незначительное снижение нагрузки на сеть и дисковую систему пользователя.
Файл пересобранной jvm в разы меньше oracle'овского. По сравнению с остальным клиентом этот файл все равно мал. Поэтому снижение незначительное.А это каким образом?
Во-первых, собрать JVM совсем уж и не сложно: поставить флаги на игнор ошибок (CFLAGS, CXXFLAGS) да make сделать. К тому же, соответствующие статьи про сборку целой JDK есть. Ну и если совсем уж долбануться, можно юзать сторонние JVM вроде всяких Jelatine, Jikes, CACAO, ...Подразумевается именно сложность патчей. В недрах JVM нет ничего сложного: открыть исходники, посмотреть, как грузятся классы, поставить проверки. Её собрать сложнее, чем патчить. А для переписывания протокола придётся проделать очень много работы, т.к. ты пишешь не новый функционал, как в случае кастомной JVM, а меняешь существующий - и меняешь весьма существенно, и нужно сделать это аккуратно, не сломав работу модов. Эта работа не ограничивается "подумыванием в объектно-ориентированном стиле" - нужно учитывать, что игроков может быть много, как и факторов, воздействующих на их движение, и нужно обсчитать все координаты и коллизии быстро для всех игроков. А значит, есть поле для распараллеливания вычислений. А где многопоточность - там и проблемы синхронизации. И если разматывать портянку возможных проблем, окажется, что это очень большая работа, которую просто нерентабельно делать серверам средней руки.
Смею заметить, что, например, CACAO дефолтным бинарником весит около 1 мега, при этом майн работает вполне нормально без каких-либо проблем. Так что те, кому надо, могут и без патча сократить кол-во места и ускорить запуск/работу с памятью/прочее выбрав подходящую JVM, если захотят что-то вместо HotSpot.Файл пересобранной jvm в разы меньше oracle'овского. По сравнению с остальным клиентом этот файл все равно мал. Поэтому снижение незначительное.
Однако, надо понимать, что Oracle Java и OpenJDK - две разных джавы. На дисковую нагрузку размер бинарника никак не влияет: библиотека отображается в память всего один раз - при загрузке - и больше к диску обращений нет.Файл пересобранной jvm в разы меньше oracle'овского. По сравнению с остальным клиентом этот файл все равно мал. Поэтому снижение незначительное.
Тебе не кажется, что уже с первого пункта начинаются костыли? Например, за игнор ошибок надо бить по рукам.поставить флаги на игнор ошибок (CFLAGS, CXXFLAGS)
Можно сделать всё, если это целесообразно. Пока целесообразность такого античита сомнительна. Сейчас @fereter учтёт все замечания, сделает нормальный билд JVM с адекватными проверками, оттестит на разных версиях, чтобы не было вопросов - и его либу поставят себе на сервера сотни человек, защитившись прямо сейчас на достаточном уровне. Ты же предлагаешь ухнуть неизвестное количество часов на сомнительный проект, который, возможно, взлетит, а возможно, остановится на половине пути из-за отсутствующей мотивации участников или непреодолимых проблем с совместимостью.Можно ж сделать публичный такой патч
Можно заметить 2 вещи:Кроме того, интересует другое - если OpenJDK весит в 4 раза меньше, возникает вопрос - а чего же там нет, что есть в версии от Oracle? Возможно, нет каких-то оптимизаций JIT'a? Или используются более простые и прямолинейные алгоритмы? Какую именно полезную нагрузку мы теряем, заменив Oracle на OpenJDK? Вот что должно интересовать в первую очередь, а не размер, который ни на что не влияет.
Даже сам факт смешивания jvm.dll из OpenJDK с окружением Oracle вызывает вопросы - уверен, что ничего не сломается? Уверен, что твоя версия jvm.dll совместима с версией у конечного пользователя? Какие сайд-эффекты могут возникнуть?
Тебе не кажется, что собирать OpenJDK 8, которая уже почти не поддерживается (патчи из новых версий приходят вот ну очень редко) — довольно странно? Увы, но код у OpenJDK оставляет желать лучшего: игнор ошибок сборки неизбежен, ибо причина в разных версий компилятора (под одним легально одно, под одним другое, а система сборки говорит "пусть все предупреждения будут считаться ошибками"). Бить по рукам надо тех тогда уж, кто в таком виде OpenJDK держит.Тебе не кажется, что уже с первого пункта начинаются костыли? Например, за игнор ошибок надо бить по рукам.
Извиняюсь, но я люблю Haskell и матан.Если найдёшь людей, поднимешь проект, будешь его поддерживать, обновлять и, главное, доведёшь до конца - you're welcome, а пока это только мысли вслух, которые здесь высказывались уже несколько десятков раз и никуда дальше "да, надо делать" не ушедших.
Однако, разница в 4 раза весьма солидная. Интересно понять, откуда она взялась, если бинарная совместимость почти под 100%.малый размер конкретного — лишь особенность сборки
Но и билдится джава в msvc2010, на то время восьмая джава была весьма актуальна и проблем со сборкой быть не должно.ибо причина в разных версий компилятора
Категорически согласен. Привязываться к конкретной версии компилятора - свинство. И ещё большее свинство - завязывать на легаси-компиляторы актуальные версии джавы. 2019й год, собираем тулсетами десятилетней давности! Так победим!Бить по рукам надо тех тогда уж, кто в таком виде OpenJDK держит.
Мысли-то хорошие, но из разряда идей они так и не выйдут. Как коммунизм. Говорят, что его надо строить (как? из чего? и где?), но никто не строит.но мысли по-моему хорошие
Может быть, интринсики сожрались какие-то, может быть, еще что-то. Может быть, оптимизация хорошо сработала (без режима дебага ж собрано). CACAO под Java 6 выдавал при этом очень даже неплохие результаты, хоть и весит всего ничего.Однако, разница в 4 раза весьма солидная. Интересно понять, откуда она взялась, если бинарная совместимость почти под 100%.
Это уж смотря чем билдить. Если билдить через GCC под целевую платформу, то на новых версиях новые предупреждения и сообщения об ошибках, ибо осознание проблем кода не стоит на месте.Но и билдится джава в msvc2010, на то время восьмая джава была весьма актуальна и проблем со сборкой быть не должно.
Во всяком случае, эти мысли за истину как труды Маркса или Аристотеля не принимаются. Были схоластики, принимались труды Аристотеля за истину (например, его Органон), а в итоге имеем современную математическую логику с гильбертовской аксиоматикой для логики высказываний. Были коммунисты, принимались труды Маркса за истину, творились грязные дела во имя светлого коммунизма, основываясь на введенной Сталиным логике по модус поненс, а в итоге имеем рухнувший СССР и распространение логики по модус толленс.Мысли-то хорошие, но из разряда идей они так и не выйдут. Как коммунизм. Говорят, что его надо строить (как? из чего? и где?), но никто не строит.
Влияет тем, что во время запуска выделяется память и туда распаковывается сжатое. Что есть оверхэд в виде более долгого запуска.Не думал, что сжатие бинарников upx'ом откроект холивар на тему бинарной совместимости. Собранный бинарник весит почти столько же, сколько и oracle'овый. Перед публикацией он сжимается upx'ом с флагом на максимальную степень сжатия. Это нужно для того, чтобы отвадить мамкиных реверсеров искать места для патчей, не сняв upx. На скорость исполнения кода upx не влияет, ибо протектером не является.
Пару лет назад имел опыт сборки только девятой джавы в msvc2010 и пробовал завести на vs2017, патчил make, что-то частично завелось, но собрать так и не получилось. Под линукс, думаю, всё гораздо проще...Если билдить через GCC под целевую платформу
А это правильно. Независимо от содержания идей и господствующей логики, всегда полезно сомневаться и пересматривать взгляды. Рациональное зерно в идее серверных античитов, бесспорно, есть - вопрос лишь в том, как вырастить из этого зерна готовый качественный продукт.эти мысли за истину как труды Маркса или Аристотеля не принимаются
А ларчик просто открывался. Однако, вопрос о том, действительно ли твой билд jvm.dll совместим с любым билдом у пользователя, остаётся открытым. Ты писал о проблемах с 1.6.4 - кто виноват и что делать? Какова вероятность, что такие проблемы неожиданно вылезут на других версиях или с какими-нибудь модами?Не думал, что сжатие бинарников upx'ом откроект холивар на тему бинарной совместимости
upx -d jvm.dllЭто нужно для того, чтобы отвадить мамкиных реверсеров искать места для патчей, не сняв upx.
Кстати, не всегда. Если бинарник большой, а диск медленный, упаковка может даже ускорить запуск.Что есть оверхэд в виде более долгого запуска.
Во-первых, по сравнению с загрузкой minecraft. Распаковка почти мгновенна.Влияет тем, что во время запуска выделяется память и туда распаковывается сжатое. Что есть оверхэд в виде более долгого запуска.
Для второго есть результаты замеров? Или же принять за плацебо?Во-первых, по сравнению с загрузкой minecraft. Распаковка почти мгновенна.
Во-вторых, с пакером запускается быстрее, так как меньше читается с медленного диска.
И опять же, не всегда. Например, у меня m.2 ssd и 3.5 гигабайта в секунду на чтение. Уверен, что распаковка будет быстрее, чем чтение?Во-вторых, с пакером запускается быстрее, так как меньше читается с медленного диска.
И опять же, абстрактные "13 секунд" - это сферический конь в вакууме. Много это или мало? Когда публикаешь сравнения, пиши относительные результаты: было -> стало. Потому что 13 секунд на Pentium 4 с полудохлым IDE-HDD - это космос. А на i9-9900k с m.2 - черепаха.запускаются за 13 секунд
Хорошим тестом будет сравнить время запуска для класса с пустым main, раз уж грубые замеры времени запуска клиента ощутимой разницы не показывают (хотя бы для полноты замеров). Так получится чище и гораздо более сравнимо.Пока из тестов только то, что ForgeOptiFine 1.7.10 в tlauncher без модов, что с защитой, что без запускаются за 13 секунд.
Именно поэтому все замеры производительности - имхо - бессмысленны. Слишком много факторов влияют на запуск - и операционка вносит свой вклад, и процессор каждый раз чуть по-разному будет работать, а вот кто-то к диску пошёл стучать, пока он стоит с секундомером. Чтобы реально оценить влияние его патчей, надо прогнать миллионы классов подряд через его проверки - где бы ещё найти такие приложения. А на одном классе бОльшее влияние будет оказывать окружение.в первом случае по предубеждению pinta мне будет казаться тяжеловеснее, чем во втором.