Tengo muchos complementos habilitados cuando uso Vim, he recopilado complementos a lo largo de los años. Estoy un poco harto de cuánto tiempo tarda Vim en comenzar ahora, así que me gustaría perfilar su inicio y ver cuál de los muchos complementos que tengo son responsables.
¿Hay alguna forma de perfilar el inicio de Vim o la ejecución de scripts? Idealmente, me gustaría saber cuánto tiempo pasa Vim en cada script de Vim que carga.
vim --startuptime /dev/stdout +qall
time vim +q
si solo quieres cronometrar el inicio de vim como un todo.vim --startuptime /dev/stdout +qall
yvim --startuptime vim.log +qall; cat vim.log
.Puede utilizar el propio mecanismo de creación de perfiles vim:
Después de ejecutar lo anterior, encontrará un archivo llamado profile.log en el directorio actual con toda la información requerida. Para obtener una tabla de información por script similar a una por función ya presente, use (después de abrir este archivo en vim):
No estará ordenado, pero siempre puede usar el
:sort
comando incorporado si el número de scripts es demasiado grande.fuente
dbext.vim
, que tardógvim --cmd 'profile start profile.log' --cmd 'profile func *' --cmd 'profile file *' -c 'profdel func *' -c 'profdel file *' -c 'qa!'
Crea muchos archivos vacíos en vim.He creado este proyecto Github con el fin de responder mejor a su pregunta. Básicamente, resume el tiempo para cada función que llama para cada plugin, lo que no es obvio (pero importante) a partir de la salida del perfil vim sin procesar. Bash, Python, R, Ruby son compatibles para crear los resultados de creación de perfiles.
Obtendrá una cifra de resultado como esta:
Junto con la salida de texto como esta:
fuente
!
antes de la etiqueta.Puede ejecutar
vim -V
, canalizar la salida a través de una utilidad que agrega marcas de tiempo y analizar la salida. Esta línea de comando hace esto, por ejemplo:Es posible que deba escribir a ciegas :qpara volver a su mensaje. Luego, debe encontrar el archivo
vilog
en su directorio actual con marcas de tiempo de contrataciones al comienzo de cada línea.Si puede hacerlo con una granularidad de un segundo, puede hacer esto:
fuente
Basado en el trabajo realizado por @hyiltiz que depende de R, hice una versión de Python del generador de perfiles, ya que esto está más a menudo disponible en un sistema que R.
También es un poco más fácil de extender, por lo tanto, las características son:
El resultado es similar a lo que proporciona vim-plugins-profile:
fuente
No plugin found
.Refiné la solución vim -V por innaM para mostrar el tiempo delta:
fuente
Si está cargando sus complementos desde un archivo .vimrc, lo que podría hacer es colocar una
q
línea en algún punto del archivo para que se cierre y pueda usar un temporizador de proceso, como eltime
comando unix . Más a fondo, esto se vería así:.vimrc
archivo existenteq
líneatime vim
repetidamente y promedioEsto no es elegante, pero creo que hará el trabajo.
fuente
Hay un complemento para perfilar el tiempo de inicio de vim.
http://www.vim.org/scripts/script.php?script_id=2915
fuente
Puede ser conveniente rastrear
--startime
al abrir un archivo en particularfuente
¿No hay un
time
comando bash que pueda usarse así:EDITAR : no incluye el tiempo de inicio de los scripts. Utilice la sugerencia @jamessan en su lugar.
fuente