Pull to refresh
0
0

Software Engineer

Send message
Ctrl + C — это прерывание исполнения (SIGINT).
1) Shenandoah доступен в OpenJDK 11 начиная с версии 11.0.9
Отличная статья, спасибо!

Забавно, что «non-sealed» — это первый keyword c дефисом, хотя JEP Keyword Management for the Java Language так и остался в статусе черновика.
В Java, как и в Scala (автор статьи, Li Haoyi, хорошо известен Scala сообществу) не может быть использован алгоритм Hindley–Milner, так как HM не поддерживает sub-typing.
Потому что в JavaFX есть компонент WebView, который основан на WebKit, то есть поддерживает CSS / JS / HTML5.
На эту тему у Nitsan Wakart есть прекрасная статья (я думаю вы её уже видели).

Ещё раз спасибо за статью :) Ну и по теме.

Я, таки, попробовал на ArrayList'e из одного / двух элементов — там таких эффективных оптицизаций нет.

За то если параметр заменить на String[]testIterator(String[] array) и передавать туда new String[] { «abc» }, то он вообще схлопывается в константу «3», а внешний цикл на 1 000 000 итераций анроллится (хотя я техническое дно в ASM и могу ошибаться).
+ есть замечательное видео с конференции DotNext 2015

Red Hat уже выпустили «пресс-релиз» по данной проблеме.
Потому что это вовсе не лимит инлайнинга. Это значение регулируется параметром JVM (-XX:MaxInlineSize=N) и по-умолчанию оно 35 байт.
Советую посмотреть выступление Марка Рейнхольда на JVMLS:



Он подробно рассказывает о том, как будет «изыматься» sun.misc.Unsafe с попутным введением нормального API с тем же функционалом.
Эм, как бы в C# он уже есть (см. Null coalescing operator)
Проверяемые исключения также можно выбросить используя: Unsafe.getUnsafe().throwException(new SQLException()) ну или с помощью deprecated-метода: Thread.currentThread().stop(new SQLException());
По-моему это очевидно и без бенчмарков. Аналогично и для коллекций: указание примерного размера при создании ArrayList / HashSet / HashMap etc. дает ощутимый выигрыш в производительности.
И я позанудствую: от -128 до -Djava.lang.Integer.IntegerCache.high.
Нет, tools нету в JRE.

Как вариант, просто скопировать tools.jar к библиотекам проекта. Он конечно большой по размеру (в JDK 1.8.05 — 18 Мб), но при большом желании можно повыкидывать оттуда javap, jstack, jmap, jps и прочие ненужные вещи.
В принципе, можно подключить к проекту %JDK_PATH%\lib\tools.jar и у нас есть компилятор:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
Оффтоп.

А что в .NET / Mono нет нормальной интернационализации (i18n)? А то уж как-то совсем сурово: github.com/atauenis/fcmd/blob/master/Localizator.cs
Ну там всё относительно. Есть же пост Шипилева: habrahabr.ru/post/133399 / shipilev.net/blog/2014/exceptional-performance

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity