Прекрасный пример разбора полётов по оптимизацыи кода под процэссоры: http://cr.openjdk.java.net/~shade/scratc... Это разбор скорости перебора по массиву указателей и по спискам. Там в комментариях написаны результаты автора ( это Aleksey Shipilev ) и выводы, к которым он пришёл. Кстати, несмотря на то, что это java, видно что с её JIT отличия от сишэчки минимальны (буквально в паре вычислений адреса по индэксным регистрам добавлено по регистру), а от плюсов вообще почитай никаких. И как джависты с таким прекрасным JITом умудряются такой тормозной отстой делать, что перл с питоном плачут в сторонке? Но, в общем, всем кто плюс-минус прочёл какой-нибудь гайд по оптимизацыи под современные процэссоры, я настоятельно рекомендую прочесть ссылку. Поскольку хорошый, классический разбор задачи.
2016-12-08 10:46:20

Участники:
@tzirechnoy - 9, @vt - 6, @netoneko - 1, @TJ - 1

@TJ
Где посмотреть на "тормозной отстой" на джаве? Или ты как обычно про гуй на джаве?
#2855738/1 2016-12-08 10:48:27 X
@vt
Где посмотреть на "тормозной отстой" на джаве? Или ты как обычно про гуй на джаве?
#2855738/2 2016-12-08 10:49:13
@tzirechnoy
Да как-то всё, что ни попадается. От инсталлятора оракла до red5/openmeetings и eclipse. Да, совсем без никакого гуя нет примерно ничего -- дажэ веб-сервисы на джаве обычно с веб-гуем без которого никуда.
#2855738/3 → /2 2016-12-08 10:59:20
@vt
что за веб-гуй, что за наркомания? Жуйк это тоже веб-гуй?
#2855738/4 → /3 2016-12-08 11:02:05
@tzirechnoy
Для меня жуйк это скорее джаббер-бот. Но, в общем, согласен у угнича и у вас получилось вполне шуструю штучку написать. Правда, я не знаю, какое там жэлезо под неё подложэно и сколько rps оно тянет. Собственно, и этот конкретный пример с JIT показывает, что джава можэт классно компилировать свой код, а тормоза кучи джавных приложэний связаны с чем-то ещё, не с компилятором как таковым.
#2855738/5 → /4 2016-12-08 11:30:39
@vt
тормоза "джава-приложений" связаны с тормозными гуевыми либами, там где нет гуев на джаве - там и не тормозов, все просто.
#2855738/6 → /5 2016-12-08 11:33:04
@tzirechnoy
У меня вот openmeetings, типичное веб-приложэние, тормозит просто адово. Ну, потоки видео нормально перекладывает, а вот виджэта логина можно минуту дожыдаться. Да, оно на дохленькой виртуалке, с двумя своей гигами памяти и 8 гигами на хосте, на котором ещё виртуалка с почтой работает. Но по-моему это совсем не повод минуту рисовать простенький виджэт.
#2855738/7 → /6 2016-12-08 11:35:10
@vt
> типичное веб-приложение А при чем тут Java? В данном случае у тебя тормозят адовы кучи говнофреймворков на джаваскрипте, которые там используются
#2855738/8 → /7 2016-12-08 11:37:50
@tzirechnoy
Нет, джаваскрипт тут совсем ни при чём. Виджэт показывается и в браузере без джаваскрипта совсем (неработает, правда), и тожэ через минуту. Из которой секунд 20 уходит на HTTP redirect, остальное время -- таки пытается сгенерить эту несчастную страничку.
#2855738/9 → /8 2016-12-08 11:40:10
@netoneko
Почему тормозит - как раз очень легко объяснить. Оверинжиниринг и аллокация миллионов ненужных объектов. Просто такая культура написания программ. В сама по себе джава очень быстрая, конечно.
#2855738/10 2016-12-08 11:43:06
@tzirechnoy
И да, я так подозреваю, что это из-за говнофрэймворков для джавы, со всякими паттэрнами факторий классов грушэоколачивания под generic базы хранения настроек, каждый из которых тожэ пишэтся с применением кучи библиотек, каждая из которых требует кучи библиотек, в каждой из которых нафигачены расшыряемые классы для херпоймичего.
#2855738/11 → /8 2016-12-08 11:43:10
@tzirechnoy
На пол-секунды неуспел опередить с таким жэ комментом.
#2855738/12 → /10 2016-12-08 11:43:32
@tzirechnoy
И да, предупреждая возомжное соображэние, что оно там в свопе и вообще у меня трэшынг на компе: в свопе-то в свопе, но трэшынга всё-таки нет, хост с почтой работает вообще как родной, а по второму разу (когда из свопа должно было всё подняться) всё равно этот виджэт секунд 20 рисуется.
#2855738/13 → /7 2016-12-08 11:45:25
@vt
херню выдумываешь, жуйк так и написан, ничего не тормозит. Я открыл твой openmeetings demo, там мне в лицо мегабайты джаваскрипта грузятся
#2855738/14 → /11 2016-12-08 11:46:45
@vt
если ты про "виджет" ввода логина и пароля, то это просто html, естественно, только он обмазан мегабайтами джаваскрипта
#2855738/15 → /9 2016-12-08 11:48:27
@tzirechnoy
Ну, значит угнич и ты умеете писать, а большынство тех, кто релизят приложэния на джаве -- нет. Я не говорю, что джаваскрипта там мало. Я говорю, что ещё до работы джаваскрипта оно тратит адское время на генерацыю страничек. И да, джаваскриптовские примочки как-то и не тормозят особенно: когда не надо обращаться к серверу, менюшки отлично литают, кнопочки нажымаются, диалоги при ошыбках подёргиваются, в общем явно не в нём затык.
#2855738/16 → /14 2016-12-08 11:49:09
@tzirechnoy
Кстати, хочу заметить банальное: в большынстве тэстов Array оказался быстрее linked list, и чем большэ элементов, тем большэ его преимущество, и причина этого неплохо объяснена в тексте. Хотя по-моему немного мало акцэнта на параллельном доступе к памяти, да. Но на 10 элементах linked list выигрывает у массива. Причина, по-моему, достаточно понятна: доступ к L1 кэшу и так быстрый, практически мгновенный, распараллеливать его не нужно и потому невозможно. И тогда начинает играть лишняя инструкцыя при доступе к Array.
#2855738/17 2016-12-08 11:54:24