Pull to refresh
49
1.2
Дмитрий Соломенников @DmitrySolomennikov

Компиляторщик, соавтор языков программирования

Send message

Ну договоры разные бывают. В серьезных договорах и ответственность немаленькая, и гарантийные обязательства четко прописаны.

И где в этой статье про Temurin JDK?

Вы, видимо, что-то путаете. Мы делаем Axiom JDK. Temurin JDK делает Eclipse Foundation. Это немного не про нас.

Кстати, а исходники ваших продуктов есть в отрытом доступе?

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

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

Спросил у коллег, действительно, на ранних этапах говорили "Ява".

Колхозный панк? ;)

Полагаю, речь о чем-то таком?

У меня есть коллега, который на Ява пишет практически с его появления. Он называет его исключительно "Жава" (при этом с английским, русским языками у него все хорошо, как и с произношением на обоих языках). Так что кому как нравится.

С точки зрения русского языка и энциклопедических словарей, названия острова Ява и Джава - эквивалентные.

О, спасибо! Я помнил, что еще один язык есть, но не вспомнил, какой... Цейлон, он же Шри-Ланка.

И, конечно же, «Ява» должна была быть явской

Вот именно это я и помню :) Что до цены, не покупал и не курил сам, не знаю.

Вы точнЫ, да. Поясню, Кронштадт, как и другие города вокруг Санкт-Петербурга включены в состав города. Сейчас адреса в СПб выглядят так: г. Санкт-Петербург, г. Кронштадт, ул. .... Но от центра до центра примерно 50 километров.

Это, конечно, отвал башки :) Если я правильно понял, то мы сделали вторую проекцию. Но это не точно...

Выскажу гипотезу, что вы сравниваете несравнимое. Компилятор (а мы AOT-или именно компилятор) штука достаточно сложно оптимизируемая и имеет высокую алгоритмическую сложность. Обработка DOM в этом смысле сильно проще, поскольку это большая "развесистая" структура, где за счет оптимизации расположения узлов можно экономить на бранчах в коде. Поэтому и прирост (ну или падение) у них заметно отличаются.

Повторю, это лишь гипотеза, для подтверждения требуется эксперимент и глубокий анализ.

Вкратце ответ будет такой: при длительном использовании (в рамках сборочной системы), методы компилятора успевают пройти через JIT-компиляцию вместе с профилированием. Вполне возможна ситуация, когда комбинация оптимизаций в C1/C2 вместе с профилем дает более быстрый код, чем был сгенерирован AOT. По нашим замерам разница небольшая, 1-2%.

В режиме fork запускается javac как обычное Java приложение, поэтому на каждую задачу компиляции производится "подъем" JVM. Как следствие, это дорого, и производительность проседает.

Клевая картинка, спасибо, утащу себе :)

Вы правы, да мы и не утверждали, что это решение универсально и ускоряет вообще все. Это еще один инструмент в копилку разработчика.
Gradle-демон штука не бесплатная. Ее надо настроить, разогреть, кеши поддерживать. В сравнении на длинной дистанции скорость сборки у демона и нативной (АОТ) версии сопоставимы, это правда. Но компиляция нескольких файлов "прямо сейчас" за счет быстрого старта проходит значительно быстрее.

Кроме того, наши измерения показывают, что при сопоставимом времени, затраченном на сборку в Gradle/Maven, AOT версия потребляет меньше CPU и памяти, а это уже существенно экономит ресурсы. На CI мы получаем 10-20% экономии по ресурсам, в зависимости от проекта.

И последнее. fork режим, если запускать оригинальный javac, действительно медленнее, АОТ версия же практически не дает просадки, а иногда и выигрывает, зависит от проекта.

Information

Rating
1,558-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity