Профилирование времени запуска Vim
У меня есть много плагинов, включенных при использовании Vim – я собирал плагины на протяжении многих лет. Я немного устал от того, сколько времени занимает Vim, чтобы начать сейчас, поэтому я хотел бы профилировать его запуск и посмотреть, какие из многих плагинов у меня есть.
есть ли способ профилировать запуск Vim или запуск скрипта? В идеале я хотел бы знать, как долго Vim проводит в каждом скрипте Vim, который он загружает.
10 ответов:
Если вы используете Vim 7.2.269 или более позднюю версию, то вы можете использовать опцию --startuptime.
vim --startuptime vim.log
из справки (
vim -h
):--startuptime <file> Write startup timing messages to <file>
вы можете использовать собственный механизм профилирования vim:
vim --cmd 'profile start profile.log' \ --cmd 'profile func *' \ --cmd 'profile file *' \ -c 'profdel func *' \ -c 'profdel file *' \ -c 'qa!'
после запуска выше вы найдете файл под названием профиль.войти в текущий каталог со всей необходимой информацией. Чтобы получить таблицу информации для каждого скрипта, аналогичную уже существующей для каждой функции, используйте (после открытия этого файла в vim):
" Open profile.log file in vim first let timings=[] g/^SCRIPT/call add(timings, [getline('.')[len('SCRIPT '):], matchstr(getline(line('.')+1), '^Sourced \zs\d\+')]+map(getline(line('.')+2, line('.')+3), 'matchstr(v:val, ''\d\+\.\d\+$'')')) enew call setline('.', ['count total (s) self (s) script']+map(copy(timings), 'printf("%5u %9s %8s %s", v:val[1], v:val[2], v:val[3], v:val[0])'))
Он будет несортированные, но вы всегда можете использовать встроенный
:sort
команда, если количество сценариев слишком велико.
Я создал этой проект Github, чтобы лучше ответить на ваш вопрос. В основном, он суммирует время для каждого вызова функции для каждого плагина, что не очевидно (но важно) из вывода профиля raw vim.
вы получите результат, как это:
вместе с выводом текста, как это:
Generating vim startup profile... Parsing vim startup profile... Crunching data and generating profile plot ... Your plugins startup profile graph is saved as `profile.png` under current directory. ========================================== Top 10 Plugins That Slows Down Vim Startup ========================================== 1 105.13 "vim-colorschemes" 2 42.661 "vim-easytags" 3 31.173 "vim-vendetta" 4 22.02 "syntastic" 5 13.362 "vim-online-thesaurus" 6 7.888 "vim-easymotion" 7 6.931 "vim-airline" 8 6.608 "YankRing.vim" 9 5.266 "nerdcommenter" 10 5.017 "delimitMate" ========================================== Done!
вы можете запустить
vim -V
, передайте выходные данные через утилиту, которая добавляет временные метки и анализирует выходные данные. Эта командная строка делает это, например:vim -V 2>&1 | perl -MTime::HiRes=time -ne 'print time, ": ", $_' | tee vilog
возможно, Вам придется втемную типа : q чтобы вернуться к вашему запросу. После этого, вы должны найти файл
vilog
в вашем текущем каталоге с отметками времени найма в начале каждой строки.если вы можете сделать с точностью секунды, вы можете сделать это:
vim -V 2>&1 | perl -ne 'print time, ": ", $_' | tee vilog
Я уточнил vim-V решение по innaM, чтобы показать время дельты:
vim -V 2>&1 | perl -MTime::HiRes=time -ne '$a = time unless defined $a; print time - $a, ": ", $_' | tee vilog
на основе работы @hyiltiz Это зависит от R, я сделал a Python версии профилировщика, так как это чаще всего доступно в системе, которая R.
это также немного легче расширить, таким образом, функции:
- автоматическое обнаружение папки плагина,
- Bar plot спасибо matplotlib,
- запустите анализ по нескольким исполнениям, чтобы получить среднее/стандартное отклонение,
- поддерживает ВИМ и neovim,
- можно использовать полная команда vim чтобы проверить функции ленивой загрузки, откройте файл с определенным типом файла и т. д.,
- экспорт результата в csv-файл.
вывод аналогичен тому, что предоставляет vim-plugins-profile:
$ vim-profiler.py -p nvim Running nvim to generate startup logs... done. Loading and processing logs... done. Plugin directory: /home/user/.config/nvim/plugged ===================================== Top 10 plugins slowing nvim's startup ===================================== 1 3.326 vim-fugitive 2 2.936 tcomment_vim 3 2.315 vim-hybrid 4 1.751 lightline.vim 5 0.959 vim-sneak 6 0.943 supertab 7 0.542 vim-surround 8 0.536 fzf.vim 9 0.450 fzf 10 0.434 auto-pairs =====================================
если вы загружаете свои плагины из a .vimrc файл, что вы могли бы сделать, это поставить
q
на какой-то части строки через файл, чтобы заставить его выйти, так что вы можете использовать таймер процесса, как unix