LINUX.ORG.RU

линукс на десктопе

 ,


1

3

Пользуюсь линуксом на личном лептопе (Lenovo X230 с 16Gb RAM) и макосью на рабочем (какой-то топовый 15" макбук про). Когда садился за личный лептоп программировать на Go в Gogland, постоянно страдал от тормозов при отрисовке редактора. Всё было настолько плохо, что простого перемещения курсора приходилось ждать по две-три секунды. Я сильно сомневался что дело в Gogland, поскольку IntelliJ IDEA (IDE построенная на той же самой платформе, что и Gogland) работающая на макбуке вообще сколько нибудь заметно не тормозила на гораздо более сложных файлах (тысячи строк говнокода).

Сегодня таки решил разобраться в чём проблема. Оказалось в JDK8 по умолчанию включили код рендеринга через XRender, который в принципе должен рисовать быстрее. Проблема заключается в том, что его поведение немножко отличается от поведения Java2d на других платформах: он не отобразит изменения на экране пока не переполнится буфер команд Xlib, либо пока не будет вызван Toolkit.sync().

В JetBrains считают, что это не их проблема и добавлять Toolkit.sync() не собираются: https://youtrack.jetbrains.com/issue/IDEA-150262

Разработчики OpenJDK тем временем тоже не спешат фиксить эту регрессию поскольку предложенный фикс замедлит рендеринг когда X работает по сети (что конечно является основным юзкейсом для Java программ): https://bugs.openjdk.java.net/browse/JDK-8068529

К счастью всё лечится отключением xrender, достаточно добавить строчку "-Dsun.java2d.xrender=false" в gogland64.vmoptions. Типичный linux desktop экспириенс - без допиливания напильником в нетривиальных местах будешь жрать говно с лопаты.


Если есть такой простой workaround, то никто не подорвётся фиксить это вотпрямщас.

GblGbl ★★★★★ ()
Ответ на: комментарий от GblGbl

Если есть такой простой workaround, то никто не подорвётся фиксить это вотпрямщас.

Багу уже 2 года. Если никому не нужно фиксить это в апстриме, то JetBreains могли бы добавить эту строчку по-дефолту.

nozh ()

на личном лептопе

за личный лептоп

мамка с папкой подарили?

Spoofing ★★★★★ ()
Ответ на: комментарий от Spoofing

мамка с папкой подарили?

На ебее за $175 купил :( 16Гб памяти таки подарили :)

А почему Вы спрашиваете?

nozh ()

Jetbrains немного допиливает openJDK чтоб использовать в своих IDE: https://bintray.com/jetbrains/intellij-jdk/
Попробуй скачать и запустить IDE на ней. Как правильно указать, какую JDK использовать при запуске описано тут: https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-...
Кстати все новые версии Intellij этого года (2017.*) уже поставляются с этой JDK. По идее они там именно и фиксят подобного рода баги.
От себя добавлю что не встречал подобных проблем, хотя не пользовал маки чтобы сравнить. С офтопиком разницы большой нет, имхо.
Так как упомянул что проблема особенно видна при большом количестве файлов в проекте - может быть проблема в твоём IO, прикупи SSD.

ii8_ ★★★★ ()

А какие претензии конкретно к Линуксу в данном случае?

Яббл в гораздо более выгодных условиях, так как пилит свою ось под конкретную железку. Это же касается и разработчиков софта под Яббл. И при этом все равно случаются глупейшие баги, в т.ч. на тему «десктоп юзер экспириенс».

Лучше радуйся, что вообще есть такая Джава, работающая черти где практически без доработки.

dimss ★★★★★ ()
Ответ на: комментарий от nozh

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

takino ★★★★ ()
Ответ на: комментарий от vertexua

Вот и я говорю, что сам себе создал оп проблему, а потом героически еще и тред создал о том, как эту проблему создать и решить.

takino ★★★★ ()

Я думал, общеизвестно, что продукты jetbrains можно использовать только с oracle jdk.

leave ★★★★★ ()

Никогда не писал такое, но напишу - ещё один ниасилятор. Ну зачем вот ставить себе linux, если от таких проблем бомбит? Да, это типичный линукс, который работает везде где только можно и нельзя. И это создаёт кучу возможностей, но и проблем. Даже элементарные вещи порой приходится настраивать(вроде длины сессии ssh) под свои нужды, потому что нужды разные. И что? В чём тут проблема то? Вот вы покупаете квартиру или дом и настраиваете её под себя, так ведь? Или вы предпочитаете, чтобы дядя за вас купил холодильник, плиту и даже выбрал вам ноутбук?

Больше возможностей - больше проблем. Так всегда и везде. Поэтому подход apple взлетел хорошо, но держится на плаву во многом благодаря рекламе, потому что когда меньше проблем, рано или поздно человек осознаёт, что и возможностей тоже меньше.

ixrws ★★ ()

К счастью всё лечится отключением xrender, достаточно добавить строчку "-Dsun.java2d.xrender=false" в gogland64.vmoptions.

Раз это так лечится, то в jetbrains работают самидураки, что это по умолчанию не сделали.

asaw ★★★★★ ()

а причем тут линукс, когда проблема в java2d?

mrdeath ★★★★★ ()
Ответ на: комментарий от ixrws

сейчас поработает go программистом за норм деньги, купит себе макбук :)

mrdeath ★★★★★ ()
Ответ на: комментарий от ii8_

Попробуй скачать и запустить IDE на ней.

Gogland уже идёт с JRE от JVM, и с ней по-дефолту запускается. Пока не нашёл баг в багтрекере, пробовал и с дефолтной JRE, и с системным openjdk - разницы нет.

От себя добавлю что не встречал подобных проблем

Возможно старая версия IDE, с JRE7? Или просто JRE7? В ссылке на баг OpenJDK есть видео демонстрирующее баг, там в частности видно что если водить над окном курсором, то анимация становится плавной. Возможно в твоём окружении постоянно идут какие-то Xlib евенты.

Так как упомянул что проблема особенно видна при большом количестве файлов в проекте - может быть проблема в твоём IO, прикупи SSD.

Я упомянул что на маке на более сложном для IDE проекте курсор двигается по коду незаметно, у себя я ещё не успел тысячи строк в тысячах файлов накодить. Да и SSD уже есть - Samsung EVO 850. Собственно проблема заметна даже если запустить простейшее приложение на Java с анимацией без какого-либо io. Ну и опять же, простое отключение XRender помогло.

nozh ()
Ответ на: комментарий от vertexua

Oracle JDK?

Нет, форк OpenJDK от JetBrains и ванильный OpenJDK арча.

nozh ()
Ответ на: комментарий от mrdeath

а причем тут линукс, когда проблема в java2d?

По-вашему выходит, что бы не было проблем с линуксом, не нужно ставить ничего кроме ядра

nozh ()
Ответ на: комментарий от takino

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

Может быть привык к тормозам? Я бы наверное тоже думал, что всё нормально, если бы не пользовался на рабочем лептопе макосью.

nozh ()
Ответ на: комментарий от ixrws

Да, это типичный линукс, который работает везде где только можно и нельзя. И это создаёт кучу возможностей

Да, возможностей подебажить какую-нибудь очередную проблему, мешающую заниматься своими делами хоть отбавляй

Даже элементарные вещи порой приходится настраивать(вроде длины сессии ssh) под свои нужды, потому что нужды разные. И что? В чём тут проблема то?

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

Вот вы покупаете квартиру или дом и настраиваете её под себя, так ведь?

Нет, обычно всё работает без дополнительных настроек: в розетке 110В, если включить горячую воду - польётся горячая вода, если холодную - польётся холодная, и т.п. Если что-то не соответсвует ожиданиям, обычно их исправляют до продажи/покупки.

nozh ()
Ответ на: комментарий от nozh

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

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

mrdeath ★★★★★ ()
Ответ на: комментарий от nozh

а за свою яваподелку вы тоже заплатили? Тогда вам в суппорт

mrdeath ★★★★★ ()

А какой эффект у вас даёт строчка "-Dsun.java2d.opengl=true"?

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

А какой эффект у вас даёт строчка "-Dsun.java2d.opengl=true"?

С ней тоже заметных тормозов нет. Единственное замечание - не отображается сплеш скрин.

nozh ()
Ответ на: комментарий от nozh

обычно всё работает без дополнительных настроек: в розетке 110В

черт, у меня забагованная розетка, там 220, куда слать репорты?

subwoofer ★★★★★ ()
Ответ на: комментарий от subwoofer

черт, у меня забагованная розетка, там 220, куда слать репорты?

Опечатался.

nozh ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.