LINUX.ORG.RU

Эмуляторы терминалов: тест скорости, комментарии...

 , , ,


3

5

Всем привет

По мотивам этой темы решил потестировать терминалы на скорость.
KDE. Gentoo. tmux (ну, и без него). Большинство терминалов свежеустановленные, то есть без правки конфигов; кроме konsole и xterm.
Наверное тесты не самые канонично правильные. Где большие огрехи говорите.

UPD: Переделал тесты
- теперь время вычислял не секундомером, а с помощью bc.
- оказывается достаточно сильно тормозил (и, вчастности, вызывал рывки при прокрутке) conky; выключил его.
- на тесты сильно влияет размер окна; эти тесты делал при максимизированном окне.

Тестировал выводом файла messages:

$ cat /var/log/messages.log | wc -l
148836
Тестовая команда:
$ START=$(date +%s.%N) ; cat /var/log/messages.log ; END=$(date +%s.%N) ; D=$(echo $END - $START | bc -l) ; echo "Duration: ${D:0:-8}"
Результаты
xterm: 56.0; экран мигает
xterm+tmux: 87.2s; только нижняя половина экрана мигает

Eterm: 27.6s; выводится плавно
Eterm+tmux: 28.7s; выводится плавно

termite: 3.9s ; выводится рывками
termite+tmux: 13.0s ; выводится плавно

qterminal: 3.6; выводится еле заметными равками
qterminal+tmux: 12.6; выводится еле заметными равками

konsole: 2.1s; выводится еле заметными рывками, примерно через 1 секунду после начала вывода экран замер, и потом показало конец файла
konsole+tmux: 12.7; выводится еле заметными рывками

st: 1.4s; выводится очень плавно
st+tmux: 13s; выводится очень плавно

urxvt: 0.7s; выводится очень плавно
urxvt+tmux: 13s; выводится очень плавно

Некоторые комментарии

Сразу скажу, что мне от терминала многого не нужно, только скорость, приятный внешний вид (шрифты, цвета) и корректная работа с клавиатурой; остальное мне даёт tmux. И я вот подумал, что такой терминал не должен быть большим и тянуть 100500 зависимостей...

xterm: некоторое время пользуюсь им как легковесным. Не сразу разобрался с конфигом (~/.Xdefaults, после правки нужно запустить xrdb ~/.Xdefaults, комментарий начинается с '!' а не с '#', кое-какое меню вызывается по Ctrl+RightClick). Оказался и вправду тормозным.

Eterm: самый наркоманский терминал. Искаропки не понимает кириллицу, глючит с tmux (нижняя строка раз в секунду дублируется и плывет вверх). Внешни вид (тема) - welcome to 90-е, и как сменить - сходу не нашел. Кроме того - жуткий тормоз.

termite: в Gentoo пришлось подключить оверлей nightmare, что для меня минус. Терминал как терминал. По дефолту идёт достаточно приятная тема. Говорят, удобный.

konsole: пользуюсь давно. Всегда устраивал, но в последнее время стал искать более легковесных решений, в первую очередь по зависимостям. Из минусов - его нужно тюнить чтобы стал конфеткой, в том числе раскладку клавиатуры. Если бы не его зависимости от KDE библиотек - отличный терминал.

st: произвел очень хорошее впечатление: приятная дефолтная тема, самая плавная работа из всех, очень маленький размер. Правда конфигурируется методом правки исходников; но меня это мало пугает, так как операция разовая, в Gentoo это делается просто, да и дефолт неплох. Еще говорят, очень большой текст из буфера обмена не вставить.

urxvt: а я думал, что st по скорости уже ничто не обгонит :) . Еще говорят, что можно perl'е расширения делать. Ну ок.

Итог (для себя)
Или st или urxvt.

Замечания? Комментарии?

P. S. Как вовремя: Какой эмулятор терминала в качестве основного вы используете в 2016 году?
P. P. S. Вот бы еще такой бразуер найти...

★★★★★

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

urxvt

urxvtd + urxvtc прогони. Интересно какой оверхед будет в клиент-серверном режиме.

devl547 ★★★★★
()

Вот еще какой-то тест fps откопал, его тоже можно попробовать.

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

tmux — это, если мне не изменяет память, аналог GNU Screen’а. То есть это, грубо говоря, эмулятор терминала для терминала, то есть это для работы с удаленным телетайпом по SSH или еще как.

Мультиплексер. Т.е. делает из нескольких tty один и позволяет между ними переключаться.

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

какой оверхед будет в клиент-серверном режиме

Никакого

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

Ибо очевидно, что окна и вкладки он реализует ущербнее, чем оконный диспетчер,

Вполне сопоставимо с каким-нибудь статическим тайловым WM.

а прокрутку, поиск и копирование — ущербнее, чем эмулятор терминала

Тоже сопоставимо. Хотя поиск немного хуже, в том смысле, что нельзя (по крайней мере, у меня только что не получилось) забиндить на какую-нибудь одну клавишу.

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

tmux — это, если мне не изменяет память, аналог GNU Screen’а. То есть это, грубо говоря, эмулятор терминала для терминала, то есть это для работы с удаленным телетайпом по SSH или еще как.

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

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

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

Ты не понял, он имел в виду, что термита никогда не будет в дереве по той же причине, почему свежайший блендер в дереве за ноябрь 2014 года. Говнополиси. Нужно объяснить подробнее?

l-_-l
()
Ответ на: комментарий от l-_-l

Говнополиси. Нужно объяснить подробнее?

Да. Какое именно полиси к такому приводит?

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

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

Вполне сопоставимо с каким-нибудь статическим тайловым WM.

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

Но одну вещь вы никак не обойдете — screen / tmux / emacs / firefox могут оперировать только своими окнами / буферами / вкладками, тогда как даже самый захудалый оконный диспетчер — всеми наравне.

В итоге вы загоняете себя в два уровня вложенности окон. И хорошо еще если эрзац-wm позволяет вам из него выбраться, обратив любое эрзац-окно в полноценное в любой момент. ГНУ Емакс и Файфокс позволяют, ГНУ Скрин, насколько я понимаю, — нет. А Т-Мукс?

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

Если пакет идёт забандленный либами или зависит от либ (в случае термита: vte-ng) которые есть в дереве (vte) но с патчами, то такой пакет не дерево не допускается.

Дальше есть всего два варианта событий: либо желающие иметь в дереве этот пакет находят специально обученного человека (из инфраструктуры генты, не левого), который тратит своё время на то, чтобы извлекать патчи из либы и предоставлять их отдельно каждый раз, когда выходит новая версия целевого пакета, а также тестирует over9000 пакетов, которые зависят от этой либы на предмет не конфликтуют ли они с этими патчами.. дальше можно не продолжать? Это никому не нужно, вот именно по этому блендер в дереве (это софт ААА-класса, один из лучших попенсорц программ под этот ваш, на минуточку) свежайший аж за ноябрь 2014 года.

А, да, второй вариант: идут лесом, что и делают пользователи бленды. (на самом деле пользуют оверлеи или качают с сайта и кладут в /opt).

l-_-l
()
Ответ на: комментарий от l-_-l

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

Не уточнишь, кстати, какие именно библиотеки в 2.77a забандлены?

equery f blender | grep -v scripts
не выдаёт ничего подозрительного.

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

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

Мне нраицца :) (статический тайлинг) Есть что-то менее ущербное?

Но одну вещь вы никак не обойдете — screen / tmux / emacs / firefox могут оперировать только своими окнами / буферами / вкладками, тогда как даже самый захудалый оконный диспетчер — всеми наравне.

В итоге вы загоняете себя в два уровня вложенности окон. И хорошо еще если эрзац-wm позволяет вам из него выбраться, обратив любое эрзац-окно в полноценное в любой момент. ГНУ Емакс и Файфокс позволяют, ГНУ Скрин, насколько я понимаю, — нет. А Т-Мукс?

Да. Запуском другого терминала и атачем к сесси.

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

В итоге вы загоняете себя в два уровня вложенности окон.

А в любом случае получается два уровня вложенности. Переключаться между табами в, скажем, браузере - не то же самое, что переключаться между приложениями. То есть да, мне нужен firefox и в нем таба Х, а не таска Z (на таскбаре), которая соответствует табе X на в firefox. Или упрощая: Alt+Tab не должен переключать табы в firefox.

Я соглашусь, что, если есть WM, который делает табы из всего, то это решение. Хотя нет: еще нужен тайлинг. И еще - доступ к этому функционалу по ssh.

Первый две - Тайлинг-WM? Ок, я осваиваю awesome, только он похож на полуразваливающися самокат, да с винтиками и реечками, из которых потенциально можно собрать самолет. Потихоньку пилю, что ж делать. Есть что-то готовое не вырвиглазное?

Ну, а про ssh и консольку - тут уж исключение, извиняй.

А вообще уровней вложенностей в общем случае 5. Вот пару примеров.
0. X-серверы/VT
1. WM хостовой системы
2. Виртуалка, WM гостевой системы
3. Терминал/tmux/screen с его табами и окнами
4. vim с его табами и окнами

0. X-серверы/VT
1. WM локальной системы
2. VNC, WM удаленной системы
3. Терминал/tmux/screen с его табами и окнами
4. vim с его табами и окнами

0. X-серверы/VT
1. WM локальной системы
2. Putty с его табами
3. Терминал/tmux/screen с его табами и окнами
4. vim с его табами и окнами

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

В итоге вы загоняете себя в два уровня вложенности окон. И хорошо еще если эрзац-wm позволяет вам из него выбраться, обратив любое эрзац-окно в полноценное в любой момент. ГНУ Емакс и Файфокс позволяют, ГНУ Скрин, насколько я понимаю, — нет. А Т-Мукс?

Да. Запуском другого терминала и атачем к сесси[и].

А для идиотов можно? Пошагово?

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

А для идиотов можно? Пошагово?

Теория: Сессия содержит табы; табы содержат окна (экран, разделенный на две части - два окна).

У тебя есть tmux сессия. Ты можешь запустить два терминала, на каждом запустить tmux клиент, оба будут подсоеденены к одной сессии (как к серверу). Тогда на первом термнале ты можешь показать первую табу, на втором - вторую; при этом в обоих терминалах ты можешь переключаться между всеми табами.

Не нравится видеть все табы - можно перебрасывать окна между сессиями (не пробовал, но читал). Можно перебрасывать окна между табами (пробовал).

Всё можно автоматизровать.

У меня обычно одна сессия. Делаю что-то за домашним компом. Запустил, например, апдейт систем. Сел за рабочий комп (Винда). С рабочего компа достучался по ssh к домашнему, подсоеденился к существующей tmux сессии, посмотрел как дела, что-то сделал, отключился (а процесс идет). И т. п.

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

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

В каком смысле «в любом»? Хотя да, есть да слишком тупые программы, не умеющие в окна — Вим, например. Если вы ими пользуетесь, то это проблема. К слову, это была не последняя причина, почему я [почти] перешел на ГНУ Емакс.

То есть да, мне нужен firefox и в нем таба Х

А не, ну если вам именно нужна вложенность окон, то хозяин — барин.

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

Теория: Сессия содержит табы; табы содержат окна (экран, разделенный на две части - два окна).

Строго говоря, руководство сообщает, что сессия содержит окна, а окна содержат «стекла» (pane), ну допустим.

Ты можешь запустить два терминала, на каждом запустить tmux клиент, оба будут подсоеденены к одной сессии (как к серверу). Тогда на первом термнале ты можешь показать первую табу, на втором - вторую; при этом в обоих терминалах ты можешь переключаться между всеми табами.

А вот не получается в лоб, иначе я бы не спрашивал.

первое окно URxvt:

$ tmux
C-b c

— имеем два эрзац-окна.

второе окно URxvt:

$ tmux attach-session
C-b 0

— эрзац-окно переключилось в обоих окнах.

Да и по мне по другому и быть не может, но все-таки, ЧЯДТ?

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

А вот не получается в лоб, иначе я бы не спрашивал.

Ступил. Извини.

# Терминал 1: Создаем первую сессию с именем 'one'
$ /usr/bin/tmux new -s one

# Терминал 2: Создаем вторую сессию с именем 'two' и группируем ее с первой
$ /usr/bin/tmux new -s two -t one

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

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

Чтоо?
> Можно, для непонятливых: что vim не умеет?

Работать в нескольких окнах. А что, уже научился? Я просто не слежу новостями, а тут всякие неовимы размножаются — они, может быть, уже и умеют.

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

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

tmux new -s two -t one

О! Еще не знаю, где мне это пригодится, но выглядит очень круто. Благодарю.

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

Работать в нескольких окнах.

Ты имеешь ввиду, чтобы два иксовых окна показывали один и тот же контент в vim? Нет не умеет.

Максимум что можно - перебрасывать буфер между инстансами vim (https://github.com/tyru/transbuffer.vim) и из командной строки удаленно управлять инстансом (открывать файлы, посылать комбинации клавиш).

А зачем? Если только не парная работа - tmux же обеспечит данный функционал.

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

Лично для меня «остальное» — это возможность развязать соединение с tty/pty и его отображение. Говоря проще, я запускаю tmux на манер системного демона, а из графической сессии или SSH-соединения — подключаюсь к ранее запущенному экземпляру. Это даёт мне устойчивость к обрывам связи (падениям иксов, ...).

Ну и да, мой WM не умеет вкладки и тайлинг, но я не готов менять WM/DE ради одной этой возможности. Поэтому тайлинг приходится костылить средствами tmux.

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

не умеющие в окна — Вим, например.

Или можно просто табы, которые просто работают на всех платформах/DE. А могли в nvim/vis поучаствовать, там как раз, эм, хотят окна сделать.

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

чтобы два иксовых окна показывали один и тот же контент в vim?

Нет, конечно. Зачем это может быть нужно?

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

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

не умеющие в окна — Вим, например.

Или можно просто табы

Зачем? Какой от них прок?

А могли в nvim/vis поучаствовать, там как раз, эм, хотят окна сделать.

Нет, спасибо. Я распробовал, наконец, ГНУ Емакс, и осознал, по сравнению с Вимом он просто в другой весовой категории. Постоянно бодаться с фундаментальной ограниченностью Вима мне более не хочется.

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

Иметь более одного окна на один процесс Вима

Вот что-то я не понял, что именно нужно. Открываем vim file, а в нём :tabnew file — разве не оно? Те же вкладки, как и в sublime text, например.

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

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

Как раз-таки большинство редакторов (на моей памяти), особенно кросс-платформенных, чаще делают табы.

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

Всё, понял. Есть в TODO:

7 When starting Vim several times, instantiate a Vim server, that allows communication between the different Vims. Feels like one Vim running with multiple top-level windows. Esp. useful when Vim is started from an IDE too. Requires some form of inter process communication.

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

Или можно просто табы

Зачем? Какой от них прок?

просто работают на всех платформах/DE

в роли workspace'ов. И на переключения можно вешать команды.

Я распробовал, наконец, ГНУ Емакс, и осознал, по сравнению с Вимом он просто в другой весовой категории.

Это верно. Но мне, например, и [n]vim норм, в т.ч. за консистентный с sh макро-язык (ну, какое-то его подмножество), интеграцию с командной оболочкой и возможность использования других ЯПов для скриптования. А elisp кажется слишком большим «крюком» в ненужном направлении.

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

Вообще не понимаю. Какие окна? Есть иксовые, есть окна и табы в vim'е. Ты какие имеешь ввиду? Приведи пример?

Короче, как в Емаксе, Кэйте,

Kate? Какие там окна? Просто в одном окне можно открыть несколько фалов.

Иметь более одного окна на один процесс

Если ты про иксовые окна - зачем это вообще может быть нужно? Приведи use case и бенефиты?

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

просто работают на всех платформах/DE

На язык просится знаменитая цитата про Яву.

в роли workspace'ов.

В роли workspace’ов хороши workspace’ы.

И на переключения можно вешать команды.

Можно грабить корованы...

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

Есть иксовые, есть окна и табы в vim'е. Ты какие имеешь ввиду?

Иксовые / веладновые / кварцевые / как-там-в-Винде-зовется-экранный-сервер. Полноценные, короче, а не эрзац внутри одной программы.

Kate? Какие там окна?

Такие же, как в ГНУ Емаксе (где они зовутся «рамками»). И курсор тоже привязан не к буферу, а к окну. А вот в Гэдите, должен заметить, возможности окон попримитивнее, насколько я вижу, но они там, разумеется, тоже есть. Да и вообще — чему вы удивляетесь, это же абсолютно базовый функционал любой современной программы. Говоря про любую современную программу, надо, правда, признать, что не всегда есть прикладная пользовательская разница между несколькими окнами одной инстанции и изолированными инстанциями — тому же эмулятору терминала обычно до лампочки; вот текстовому редактору или веб-обозревателю есть разница.

Если ты про иксовые окна - зачем это вообще может быть нужно?

Вы меня даже в тупик ставите такими вопросами. Ну я попробую: ключевое положение — «расположить рядом и видеть одновременно». Расположить рядом и видеть одновременно более одного разного места из одного файла, расположить рядом и видеть одновременно более одного текстового файла, расположить рядом и видеть одновременно текстовый файл и текстовую консоль, текстовый файл и графический веб-страницу, текстовый файл и видео-проигрыватель. Ну и так далее в любых комбинациях.

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

Всё тоже самое, что и в .Xdefaults, только название класса опускаешь. Куча примеров тут: /etc/X11/app-defaults/

В .Xdefaults у меня только то, что очень редко меняется и в частности

#ifdef COLOR
*customization:         -color
#endif

А в уже ~/XTerm настроена тема и всё остальное:

#include "XTerm-zenburn"

TL;DR:

.Xdefaults: «XTerm*loginShell: True»
XTerm: «*loginShell: True»

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

На язык просится знаменитая цитата про Яву.

Какая?

В роли workspace’ов хороши workspace’ы.

Workspace'ов может не хватить. И старые привычки никто не отменял.

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

На практике чаще достаточно одной пары: редактор + что-то.

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

А править ~/.Xdefaults и дёргать xrdb — это для дошкольников.

~/.Xdefaults читается приложением напрямую (man xterm), причем перезаписывая ~/XTerm (проверил).
xrdb обычно скармливают .Xresources

P.S. Школьник, а читать не научился.

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

просто работают на всех платформах/DE

На язык просится знаменитая цитата про Яву.

Какая?

«Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders».

Workspace'ов может не хватить.

Это как? Кто вас ими обделил?

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

Порядок мержинья у них, IIRC, глобальные appres (/etc/X11...), локальные appres (~/...), .Xdefaults. Т.ч. всё правильно.

Про .Xdefauls/.Xresouces ты прав, но строчки такой в мене нет. Где ты её нашёл?

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

но строчки такой в мене нет

А е, man urxvt, в xterm забыли написать.

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

Это как? Кто вас ими обделил?

Винда, вестимо.

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