LINUX.ORG.RU

Emacs vs Atom по производительности

 ,


0

4

Лет 8 пользуюсь Emacs. По функционалу вопросов нет, но вот под оффтопиком тормозит (банально низкая отзывчивость на ввод символов, перемещение курсора, форматирование кода, переход на просмотр дифов в магите и т.д.). Под онтопиком - тоже не фонтан, но намного лучше. Плагинов много, самопального кода тоже много, но почти без ненужных излишеств, т.е. почти все что подключено, так или иначе используется.

Соответственно вопрос, стоит ли смотреть на что-то более хипстерское, молодежное, современное, типа Atom? Не получится ли так, что освоив его, накачав необходимых расширений, написав свои расширения и конфиги получишь тормоза еще большие чем в Emacs?

Перемещено tailgunner из development

Ответ на: комментарий от clinic

Получил интересные данные, привожу в итоговой таблице.

                    Min,ms   Max,ms   Avg,ms   SD,ms
Atom                  61,0     99,8     84,6     8.1
IntelliJ IDEA         16,3     50,0     28,2     7,7
Emacs linum          100,4    416,5    240,1    78,6
Emacs no [n]linum     33.2    299.7    129.0    71.4
Emacs nlinum          34.2    333.4    150.4    72.4
Emacs nlinum*         82.6    199.4    130.9    24.2

Где Emacs nlinum* отличается от варианта без звездочки следующим дополнением в .emacs:

(setq gc-cons-threshold (* 511 1024 1024))
(setq gc-cons-percentage 0.5)
Kostafey
() автор топика
Ответ на: комментарий от Vovka-Korovka

Да причем здесь хук на хуке, если проверка орфографии под виндой в emacs тормозит просто жутко.

Для этого ее нужно включить + установить нужный софт.

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

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

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

Повторяю еще раз - используйте профайлер, выключите gc при замерах: (gc-cons-threshold most-positive-fixnum). gc-cons-percentage лишняя опция, а gc-cons-threshold слишком большой. Большое значение вредно так же как и малое.

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

И чего теперь? Не использовать нужные пакеты?

Найти профайлером, кто виноват, и дальше уже решать, что нужнее и важнее.

aidaho ★★★★★
()

Надоели мне эти стоны, поставил таки Typometr.

Открытый третью неделю emacsclient, 90 буферов, композитинг не выключал, т.к. лень.

# Title	Min	Max	Avg	SD
1 Emacs	7.8	94.1	11.2	6.0

94 - это походу GC сработал.
11.2±6 ms. В редакторе работающем неделями. 90 открытых файлов. Все свистелки и перделки.

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

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

Ну и чтобы не обвиняли в предвзятости и подтасовке.
Печать в здоровенный питонофайл на 187K. Остальные условия как выше.
Хуже этого только SQL дампы в одну строку (и там действительно тормозит).

# Title	Min	Max	Avg	SD
2 Emacs	18.8	78.4	48.2	14.2

48.2±14.2ms. Уже не такая радуга, но и не 100-милисекундное днище.


И на закуску, читерская синтетика: пустой Fundamental буфер
# Title	Min	Max	Avg	SD
3 Emacs  7.3	13.5	9.4	0.8

9.4±0.8ms. У меня всё.

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

Короче, я теперь этот пост буду линковать всякий раз

Что бы линкать на пост нужно еще добавть, версию емакса, ос где проводились тесты и набор установленных пакетов. Ато непонятно где и что тестировалось.

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

Унижать альтернативные редакторы, так унижать.
Пошёл и достал свой калькулятор Sony VAIO-P VGN-P19VRN, Intel Atom Z530 @ 1.33Ghz.
Синхронизировал окружения и запустил емаксодемон с теми же 90 буферами и той же конфигурацией.

*scratch*

# Title	Min	Max	Avg	SD
1 Emacs 6.4	289.5	15.6	20.4

15.6±20.4 ms. Похоже снова пришёл GC и вставил лаг.


187k питонобуфер, то же место
# Title	Min	Max	Avg	SD
2 Emacs 39.6	202.9	56.2	23.0

56.2±23 ms. Пересекли 50 мс. Печаль.


Синтетика в Fundamental
# Title	Min	Max	Avg	SD
3 Emacs 1.8	28.9	6.5	3.5

6.5±3.5 ms. Ахаха, емакс, что ты делаешь? Прекрати!
Польза от отсутствия композитинга на лицо.

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

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

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

(profiler-start 'cpu) имеется в виду и назрузка тем же Typometer? Ок, в понедельник будет нативная машинка с виндоусом и емаксом :)

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

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

Debian Jessie, всё стоковое.


Enabled minor modes: Async-Bytecomp-Package Auto-Complete
Auto-Composition Auto-Compression Auto-Encryption Column-Number
Desktop-Save Diff-Auto-Refine Ede Electric-Indent File-Name-Shadow
Flycheck Flyspell Font-Lock Global-Auto-Complete Global-Auto-Revert
Global-Ede Global-Flycheck Global-Font-Lock Global-Git-Commit
Global-Semantic-Idle-Scheduler Global-Semanticdb Global-Yascroll-Bar
Gud-Tooltip Ido-Everywhere Line-Number Magit-Auto-Revert Mouse-Wheel
Nlinum Pyvenv Pyvenv-Tracking Ropemacs Savehist Semantic
Semantic-Idle-Scheduler Shell-Dirtrack Show-Paren Size-Indication
Tooltip Transient-Mark Winner Xterm-Mouse Yascroll-Bar

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

почти голый емакс такие цифры дает, но aidaho об этом умолчал

Я могу и голый запустить, без .emacs и site-packages, но вы же тогда вообще порвётесь.

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

Я могу и голый запустить

Это и так голый емакс, кроме nlinum на производительность ничего не влияет. Под линуксом я с учетом Evil, NLinum, Projectile, Smex, Anaconda + python и прочем (см. выше) получаю latency ~25ms под macOS не превышает 45ms. У меня IDE у вас текстовый редактор с подсветкой питона поэтому рваться нечему)

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

У меня IDE у вас текстовый редактор с подсветкой питона

Интересный вывод, учитывая наличие nlinum, ede, semantic, ropemacs, ido в моём списке.

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

Debian Jessie, всё стоковое.

В твоем списке пакетов не хватает пакета для понимания прочитанного. У народа под Виндой проблема. Зачем сюда пришел, Дартаньян с Дебианом? (Хинт: под Линуксом у народа Emacs и не тормозил)

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

В твоем списке пакетов не хватает пакета для понимания прочитанного. У народа под Виндой проблема. Зачем сюда пришел, Дартаньян с Дебианом? (Хинт: под Линуксом у народа Emacs и не тормозил)

Два чая этому анонимусу. ;)

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

Очевидно, не готова для разработки.

А мужики-то не знают (с).

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

Ok. GC все же сработал, но проблема не в нем, проблема в autocomplete:

- timer-event-handler                                            1726  68%
 - apply                                                         1726  68%
  - ac-update-greedy                                             1720  68%
   - ac-update                                                   1648  65%
    - ac-candidates                                              1314  52%
     - ac-candidates-1                                           1314  52%
      - ac-yasnippet-candidates                                   792  31%
       - yas-active-keys                                          792  31%
        - cl-mapcan                                               703  28%
         - apply                                                  703  28%
          - cl-mapcar                                             703  28%
           - mapcar                                               703  28%
            - yas--table-all-keys                                 703  28%
             - maphash                                            703  28%
              + #<compiled 0x28d0dfd>                             700  27%
        - cl-remove-duplicates                                     89   3%
         - cl--delete-duplicates                                   87   3%
            cl--position                                           21   0%
        mapcar                                                    247   9%
      + eval                                                       24   0%
      + ac-symbol-candidates                                        3   0%
      + ac-variable-candidates                                      2   0%
    - ac-menu-create                                              329  13%
     - popup-create                                               329  13%
      - let*                                                      329  13%
       - progn                                                    329  13%
        - progn                                                   329  13%
         - save-excursion                                         329  13%
          - let*                                                  329  13%
           - let                                                  325  12%
            - while                                               325  12%
             - let                                                325  12%
              - let*                                              230   9%
               - overlays-in                                      229   9%
                - save-excursion                                  229   9%
                 - end-of-visual-line                             131   5%
                  + vertical-motion                                 7   0%
                 + beginning-of-visual-line                        97   3%
                 while                                              1   0%
              + if                                                 90   3%
              + setq                                                3   0%
                while                                               1   0%
           + if                                                     3   0%
           + let*                                                   1   0%
    + ac-update-candidates                                          4   0%
   + ac-start                                                      72   2%
  + #<compiled 0x10011cbd5>                                         4   0%
  + show-paren-function                                             2   0%
- ...                                                             440  17%
   Automatic GC                                                   439  17%
 + minibuffer-inactive-mode                                         1   0%
+ redisplay_internal (C function)                                 145   5%
+ command-execute                                                  99   3%
+ ac-handle-post-command                                           88   3%
+ yas--post-command-handler                                         4   0%
+ ac-handle-pre-command                                             2   0%

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

А жизнь-то налаживается:

                    Min,ms   Max,ms   Avg,ms   SD,ms
(setq ac-delay 0.1)   50,3    183,3    138,4    24,4
(setq ac-delay 0.5)   50.0     82.8     51.3     4.4

Профайлинг при (setq ac-delay 0.5):

- redisplay_internal (C function)                                 161  57%
 - eval                                                           111  39%
  - if                                                             90  32%
   - format                                                        89  31%
    - projectile-project-name                                      89  31%
     - projectile-project-root                                     88  31%
      - cl-some                                                    88  31%
       - #<compiled 0x83e8c77>                                     88  31%
        - file-truename                                            84  30%
         - file-truename                                           64  22%
          - file-truename                                          42  15%
           - file-truename                                         28  10%
            - file-truename                                        17   6%
             - file-truename                                       11   3%
                file-truename                                       3   1%
       projectile-default-project-name                              1   0%
     file-remote-p                                                  1   0%
  + tabbar-line                                                    12   4%
  + not                                                             8   2%
    propertize                                                      1   0%
 + fci-update-window-for-scroll                                    26   9%
 + jit-lock-function                                               20   7%
- ac-handle-post-command                                           50  17%
 - byte-code                                                       50  17%
  - ac-start                                                       50  17%
   - apply                                                         50  17%
    - ad-Advice-ac-start                                           50  17%
     - apply                                                       50  17%
      + #<compiled 0x281637d>                                      50  17%
- command-execute                                                  44  15%
 - call-interactively                                              44  15%
  - funcall-interactively                                          44  15%
   - smex                                                          25   8%
    - smex-read-and-run                                            25   8%
     - execute-extended-command                                    18   6%
      - command-execute                                            11   3%
       - call-interactively                                        11   3%
        - funcall-interactively                                    11   3%
         - profiler-report                                         11   3%
          + profiler-report-cpu                                    11   3%
      + sit-for                                                     7   2%
     + smex-completing-read                                         7   2%
   + backward-delete-char-untabify                                  5   1%
   + save-buffer                                                    5   1%
   + previous-line                                                  4   1%
   + next-line                                                      2   0%
     end-of-buffer                                                  2   0%
   + my-iconify-or-deiconify-frame                                  1   0%
- timer-event-handler                                              12   4%
 - apply                                                           12   4%
  - ac-update-greedy                                               10   3%
   - ac-update                                                     10   3%
    - ac-candidates                                                 8   2%
     - ac-candidates-1                                              8   2%
      + ac-yasnippet-candidates                                     5   1%
    + ac-menu-create                                                2   0%
  + #<compiled 0x10011cbd5>                                         2   0%
+ yas--post-command-handler                                         4   1%
+ ...                                                               3   1%
  mouse-fixup-help-message                                          2   0%
+ global-hl-line-highlight                                          1   0%
+ winner-save-old-configurations                                    1   0%
+ ac-handle-pre-command                                             1   0%
  internal-echo-keystrokes-prefix                                   1   0%

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

Весь тред ему твердили, возьми в руки профайлер и проверь хуки, а он ломался: «ах у меня венда, ах емакс тормозит».

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