LINUX.ORG.RU
ФорумTalks

Если из кода убрать sleep(), то он перестаёт так тормозить!

 , ,


0

3

Привет, ЛОР!

Сегодня в рубрике «Что там в GNOME?» очередное прекрасное.

Один перец решил замерить латентность в новом GNOME Console (переписанный и улучшенный GNOME Terminal) и выяснилось, что начиная с GNOME 46 он перестал так лагать, как лагал раньше. А всё потому что, и я цитирую:

The main change that caused this much improvement is likely this one by Christian that moves away from a 40 Hz VTE repaint timer to drawing every frame, synchronized with the monitor

Интересно, сколько ещё вызовов {u,}sleep() там раскидано по коду? На этом у меня всё.

Ссылка: https://bxt.rs/blog/just-how-much-faster-are-the-gnome-46-terminals/

★★★★★

Последнее исправление: hateyoufeel (всего исправлений: 1)

Подача уровня желтухи. Раньше нужды не было в таком режиме обновлять содержимое. Это ж терминал. Со временем такая потребность возникла - выровняли до частоты монитора.

Лично у меня потребность в более отзывчивом терминале возникла только при использовании cava. И это единственное. Возможно есть какой-то реальный софт, требующий такую реактивность, но лично я такой не встречал.

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

Эээ… Вот полугодовой давности бенчмарк:

I have a 655MB file with 1.5 million lines of lorem ipsum. I timed a cat in several terminal emulators. For this simple test, gnome-terminal beat xterm a little bit but wasn't anywhere close to the rest:

  foot             0m9.410s
  alacritty        0m16.881s
  konsole          0m36.737s
  gnome-terminal   1m1.096s
  xterm            1m16.919s

Разница типа в шесть раз, карл.

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

А можно какой-то реальный юзкейс где необходима такая скорость вывода? Данный бенч ничего общего с реальной жизнью не имеет.

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

А можно какой-то реальный юзкейс где необходима такая скорость вывода? Данный бенч ничего общего с реальной жизнью не имеет.

Вывод в терминал не имеет ничего общего с реальной жизнью? Ну как скажешь.

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

Я, как пользователь гнома и представитель интересов подавляющего большинства его пользователей, очень негодую что его разработчики не бросили все силы на оптимизацию терминала ведь я каждый день утром просматриваю содержимое всех файлов системы на случай если их за ночь подменили. Скорости вывода больше 200к строк в секунду хватило бы для меня, но к сожалению разработчики гнома как всегда не понимают что нужно его пользователям.

WSL_user
()
Последнее исправление: WSL_user (всего исправлений: 1)
Ответ на: комментарий от ergo

Прочитай внимательно о чем я написал. Два раза.

А не то что?

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

Это ж терминал. Со временем такая потребность возникла - выровняли до частоты монитора.

А почему все остальные терминалы такой срани не делали? Это не отсутствие фичи, это наоборот специально запиленный таймер со слипами и синхронизацией. И почему-то именно на 40Hz, что не совпадает и никогда не совпадало с частотой вообще чего-либо.

Лично у меня потребность в более отзывчивом терминале возникла только при использовании cava.

Процитирую великого @saahriktu: «Не всем нужен не лагающий терминал!»

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

И почему-то именно на 40Hz, что не совпадает и никогда не совпадало с частотой вообще чего-либо.

Не редкость. В QEMU для gtk display захардкожена refresh rate 33Hz, баг висит годами, хорошего способа менять частоту не предусмотрено.

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

Вывод в терминал не имеет ничего общего с реальной жизнью?

Не подменяй понятия. Вывод такого объёма информации в терминал в каких кейсах имеет смысл?

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

Не подменяй понятия. Вывод такого объёма информации в терминал в каких кейсах имеет смысл?

Ты понимаешь что такое бенчмарк? Это когда ты берешь трубу, и суешь в неё все что лезет, чтобы было удобнее замерять. Терминалы будут тормозить одинаково, что на 650 мегабайтах, что на двух.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от skiminok1986

Вывод в терминал не имеет ничего общего с реальной жизнью?

Не подменяй понятия. Вывод такого объёма информации в терминал в каких кейсах имеет смысл?

Это бенчмарк, дядя. Бенчмарки сами по себе смысловой нагрузки не несут и нужны только чтобы протестировать код и/или железо. По результатам теста выяснено, что код в VTE сосёт и его писали криворукие дебилы.

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

Это бенчмарк, дядя. Бенчмарки сами по себе смысловой нагрузки не несут и нужны только чтобы протестировать код и/или железо. По результатам теста выяснено, что код в VTE сосёт и его писали криворукие дебилы.

Понятно. VTE плохо решает задачи бенчмарков. Я думал есть какие-то реальные кейсы из реального мира. Оказалось, просто кому-то нужен ещё один повод теребонькать на что-то.

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

Терминалы будут тормозить одинаково, что на 650 мегабайтах, что на двух.

Упростим задачу для альтернативно одарённых. Зачем кидать в терминал 2 мегабайта? Ты реально будешь их там читать?

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

Упростим задачу для альтернативно одарённых. Зачем кидать в терминал 2 мегабайта? Ты реально будешь их там читать?

Ага, например если я логи скроллю. Прикинь, так можно делать!

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

Понятно. VTE плохо решает задачи бенчмарков.

Да нет, просто на таком вырожденном случае проще видеть разницу. Ты как будто никогда софт не писал и профайлером не работал.

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

Ага, например если я логи скроллю. Прикинь, так можно делать!

Регулярно скроллю логи, но не в озвученном объёме. Никогда не приходилось скроллить 600+ метров логов за минуту с небольшим. Более того, никогда не испытывал потребности скроллить 600+ метров логов быстрее, чем за минуту.

Если уж мы не используем никакой софт для просмотра логов, то хотя бы less делает это занятие сильно удобней, так как в логах обычно ищется нечто конкретное (время события, какой-нибудь идентификатор). Естественно, для поиска проще использовать поиск в less, чем листать 600+ метров логов со скоростью в несколько секунд.

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

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

Да нет, просто на таком вырожденном случае проще видеть разницу. Ты как будто никогда софт не писал и профайлером не работал.

Я это понимаю. Но эта оптимизация не влияет вообще ни на что. Разве что кто-то реально страдает, от того, что он не может читать логи со скоростью 40 мегабайт в секунду из-за медленного терминала.

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

Господи, тред про то, что VTE смешное убожество. выключай зануду.

Я пытаюсь понять почему смешное убожество. С твоих слов выходит, что потому, что сасает на выдуманных кейсах, не имеющих отношения к реальности.

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

Я пытаюсь понять почему смешное убожество. С твоих слов выходит, что потому, что сасает на выдуманных кейсах, не имеющих отношения к реальности.

Потому что баг из-за которогоо он медленне всех остальных терминалов в разы заключается в «мы воткнули sleep и оно тормозит».

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

Я это понимаю. Но эта оптимизация не влияет вообще ни на что.

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

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

Потому что баг из-за которогоо он медленне всех остальных терминалов в разы заключается в «мы воткнули sleep и оно тормозит».

Потому что не баг, очевидно.

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

Потому что баг из-за которогоо он медленне всех остальных терминалов в разы заключается в «мы воткнули sleep и оно тормозит».

Потому что не баг, очевидно.

Тормоза и лагалище как фича программного продукта :DDDDD

Видимо, для пущей солидности, как в тех байках из начала 2000х.

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

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

Ну я фиг знает. Вон там в статистике медленный при медленный xterm не проявляет проблемы. Конечно, если у кого-то система медленней третьего пентиума, им критично может быть, но надо реально смотреть.

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

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

Ну я фиг знает. Вон там в статистике медленный при медленный xterm не проявляет проблемы. Конечно, если у кого-то система медленней третьего пентиума, им критично может быть, но надо реально смотреть.

Это два разных бенча: латентность и пропускная способность. У xterm всё хорошо с первым, но плохо со вторым. С другой стороны, я так прозреваю, там в размер буфера упирается всё, так что поправить не проблема.

Но я не знаю почти никого кто бы xterm пользовался в принципе, кроме пары лоровских шизоидов. Это как сравнивать производительность WM c TWM каким-нибудь.

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

Перепроверил на 622mb файле с lorem ipsum:

  • gnome-console 46.0: 6.08s
  • konsole 24.02.1: 13.98s
  • alacritty 0.13.2: 6.98s.

Походу теперь остальные терминалы медленные и надо бежать создавать багрепорты для их бездарей-разрабов.

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

У foot 2.76s, но он походу создавался как раз для чтения логов со скоростью 200мбс, т.к. до сих пор нет даже поддержки лигатур и автор 4 года уже говорит что не знает как их добавить не замедлив терминал.

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

У foot 2.76s, но он походу создавался как раз для чтения логов со скоростью 200мбс, т.к. до сих пор нет даже поддержки лигатур и автор 4 года уже говорит что не знает как их добавить не замедлив терминал.

Зато там есть установка app_id и прочего. Лигатуры нахрен не нужны.

Ну и будем фактологически точны:

If someone else wants to have a go at this, please go ahead. I’ll be happy to assist. For a PR to get merged, its performance impact would have to be very low though. If that cannot be done, then a runtime or compile time option may be warranted.

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

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от cumvillain

У foot 2.76s, но он походу создавался как раз для чтения логов со скоростью 200мбс, т.к. до сих пор нет даже поддержки лигатур и автор 4 года уже говорит что не знает как их добавить не замедлив терминал.

Зато там есть установка app_id и прочего. Лигатуры нахрен не нужны.

Лигатуры – прикольная тема. В редакторе, но не в терминале.

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

Лигатуры – прикольная тема. В редакторе, но не в терминале.

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

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

Лигатуры – прикольная тема. В редакторе, но не в терминале.

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

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

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

Не увидел даже issue про app_id на gnome-console, оно точно вам нужно?

Ага. Это позволяет запустить какую-нибудь консольную срань в терминале и видеть ее в доке как приложение, а не ещё один терминал.

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

49 лайков тут говорит о том что всё таки понадобилось.

49 лайков и ни одного пулл-реквеста. Значит не так сильно-то и понадобилось.

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

49 лайков тут говорит о том что всё таки понадобилось.

49 лайков и ни одного пулл-реквеста. Значит не так сильно-то и понадобилось.

Я не уверен, что лигатуры можно нормально сделать без тормозов в отрисовке. Ведь по сути нужно держать буфер из последних N символов и при образовании в них лигатуры полностью сносить их из граф.буфера и перерисовывать заново, плюс двигать всё что после них. Дикая срань, короче.

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

Я не уверен, что лигатуры можно нормально сделать без тормозов в отрисовке. Ведь по сути нужно держать буфер из последних N символов и при образовании в них лигатуры полностью сносить их из граф.буфера и перерисовывать заново, плюс двигать всё что после них. Дикая срань, короче.

Ага. Автор сказал что нормально будет, если это под #ifdef или опцию в конфиге засунуть.

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

Для alacritty сделали, но уже 3 года висит в draft, плюс в AUR есть форк с их поддержкой. Если для foot не сделали то это скорее показатель его непопулярности.

Возможно.

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

Для alacrittyсделали, но уже 3 года висит в draft, плюс в AUR есть форк с их поддержкой. Если для foot не сделали то это скорее показатель его непопулярности.

Да нет, это показатель того, что нуждающиеся в лигатурах используют Alacritty. Или Konsole. Или GNOME. Или вообще сидят на маке.

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

Я бы не сказал что те ужасы веющие 2010 годом на маке как-то заменяют линукс терминалы. А вот windows terminal вполне приятен.

Лол это ты ещё терминалы на электроне с AI не видел.

https://hyper.is/

Вот что будет эталоном лагалища, так это вот этот хтонический ужас. Гнуму до такого срать и срать ещё!

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

xterm 1m16.919s

Дидовская иксопараша ожидаемо соснула, но апологеты этого якобы юниксвейного/KISS терминала всё ещё продолжают советовать неофитам на ЛОРе это иксовое недоподелие.

Любой Konsole или Yakuake будет не только в 100 раз функциональнее этого дидовско-иксового барахла, но и быстрее. Каким местом иксодеды писали код xterm что он получился ДАЖЕ МЕДЛЕННЕЕ GNOME Terminal – загадка.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от WSL_user

разработчики гнома как всегда не понимают что нужно его пользователям.

Кстати вот интересно, есть ли пруфы, что разрабы гнома им пользуются на постоянной основе?

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

разработчики гнома как всегда не понимают что нужно его пользователям.

Кстати вот интересно, есть ли пруфы, что разрабы гнома им пользуются на постоянной основе?

Их там всего человек 10 и они все как один поехавшие наглухо. Так что, я прозреваю, что они им реально пользуются. Но они считают себя единственными пользователями, поэтому в их картине мира гнум удовлетворяет пользователей на 100%.

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

Зачем, зачем, блин вам читать 1.5 миллиона строк? Ели мой терминал их за 10 минут выведет на экран, мне это никак не поможет. И даже если за 10 секунд или за час.

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

Зачем, зачем, блин вам читать 1.5 миллиона строк

Ну спроси у гномеров, зачем они это починили. На LOR этим недовольны!

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

Ограничить скорость работы ради ничего это не баг? А что это?

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

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

Зачем, зачем, блин вам читать 1.5 миллиона строк? Ели мой терминал их за 10 минут выведет на экран, мне это никак не поможет. И даже если за 10 секунд или за час.

Видимо, это для тех, кто пока ещё не знает про ^C.

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

Любой Konsole

Всратая хрень.

или Yakuake

Ещё более всратая хрень.

будет не только в 100 раз функциональнее

От терминала, в первую очередь, необходимо быть терминалом. Остальной функционал нафиг не нужон.

ЗЫЖ Если EXL не обосрал в сообщении иксы, значит это сообщение писал не он.

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

Ни слова про интеллект не сказал.

Тогда о чём сказал? Чем именно тебе не угодила русская глубинка? :)

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

А, вот из-за кого SPLUNK придумали и целый сириус бизнес на авгиевых логнюшнях подняли ... грепать только важное, а в логи не срать всяким ненужным спамом — это какая-то религия запрещает?

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

xterm 1m16.919s

Как начнешь выводить в xterm, сверни окно (минимизируй), и через пару секунд обратно разверни, и окажется что весь вывод уже завершен, а не эти ваши 1m16.919s

futurama ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)