ipwnponies / dotfiles

Settings and configuration for unix environment
1 stars 3 forks source link

nvim startup is slow #22

Closed ipwnponies closed 5 years ago

ipwnponies commented 5 years ago

nvim takes 2.2 seconds to start up on OSX. On a beefy, shared dev server it's instantaneous (not profiled yet). So maybe this has to do with OS filesystem caching, where the server always retains a warm cache.

times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.011  000.011: --- NVIM STARTING ---
001.012  001.000: locale set
001.795  000.783: inits 1
001.816  000.021: window checked
002.033  000.217: parsing arguments
002.418  000.385: expanding arguments
002.569  000.151: inits 2
003.064  000.495: init highlight
005.683  001.906  001.906: sourcing /Users/jngu/.config/nvim/autoload/plug.vim
020.847  003.326  003.326: sourcing /Users/jngu/.vim/bundle/vim-polyglot/ftdetect/polyglot.vim
021.343  000.041  000.041: sourcing /Users/jngu/.vim/bundle/vim-polyglot/after/ftdetect/rspec.vim
021.436  010.796  007.430: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/filetype.vim
021.794  000.055  000.055: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/ftplugin.vim
022.133  000.046  000.046: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/indent.vim
023.154  000.286  000.286: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syncolor.vim
023.340  000.747  000.460: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/synload.vim
023.393  001.074  000.327: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syntax.vim
2036.017  000.495  000.495: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/nosyntax.vim
2036.753  000.149  000.149: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syncolor.vim
2036.924  000.599  000.450: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/synload.vim
2036.977  001.607  000.512: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syntax.vim
2037.969  000.202  000.202: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syncolor.vim
2038.904  000.178  000.178: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syncolor.vim
2039.614  000.178  000.178: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/syntax/syncolor.vim
2040.145  002.916  002.357: sourcing /Users/jngu/.vim/bundle/vim-monokai/colors/monokai.vim
2040.441  000.024  000.024: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/filetype.vim
2040.775  000.020  000.020: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/ftplugin.vim
2041.355  000.114  000.114: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/parts.vim
2042.010  000.131  000.131: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/init.vim
2042.872  001.226  001.096: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/section.vim
2043.112  2039.617  2019.833: sourcing /Users/jngu/.config/nvim/init.vim
2043.148  000.467: sourcing vimrc file(s)
2044.058  000.229  000.229: sourcing /Users/jngu/.vim/bundle/vim-gitgutter/autoload/gitgutter/utility.vim
2044.869  000.183  000.183: sourcing /Users/jngu/.vim/bundle/vim-gitgutter/autoload/gitgutter/highlight.vim
2045.518  001.984  001.572: sourcing /Users/jngu/.vim/bundle/vim-gitgutter/plugin/gitgutter.vim
2049.196  003.426  003.426: sourcing /Users/jngu/.vim/bundle/vim-fugitive/plugin/fugitive.vim
2049.974  000.204  000.204: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale.vim
2050.804  000.154  000.154: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/toggle.vim
2051.209  001.765  001.406: sourcing /Users/jngu/.vim/bundle/ale/plugin/ale.vim
2051.645  000.180  000.180: sourcing /Users/jngu/.vim/bundle/vim-commentary/plugin/commentary.vim
2052.331  000.445  000.445: sourcing /Users/jngu/.vim/bundle/vim-surround/plugin/surround.vim
2052.865  000.021  000.021: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/filetype.vim
2053.200  000.021  000.021: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/ftplugin.vim
2053.549  000.041  000.041: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/indent.vim
2054.581  002.006  001.922: sourcing /Users/jngu/.vim/bundle/vim-sensible/plugin/sensible.vim
2055.130  000.307  000.307: sourcing /Users/jngu/.vim/bundle/vim-endwise/plugin/endwise.vim
2055.552  000.168  000.168: sourcing /Users/jngu/.vim/bundle/vim-easy-align/plugin/easy_align.vim
2056.117  000.244  000.244: sourcing /Users/jngu/.vim/bundle/sideways.vim/plugin/sideways.vim
2056.612  000.043  000.043: sourcing /Users/jngu/.vim/bundle/splitjoin.vim/autoload/sj/settings.vim
2056.843  000.483  000.439: sourcing /Users/jngu/.vim/bundle/splitjoin.vim/plugin/splitjoin.vim
2057.284  000.196  000.196: sourcing /Users/jngu/.vim/bundle/vim-indent-object/plugin/indent-object.vim
2058.176  000.647  000.647: sourcing /Users/jngu/.vim/bundle/vim-indentwise/plugin/indentwise.vim
2059.196  000.753  000.753: sourcing /Users/jngu/.local/share/fzf/plugin/fzf.vim
2060.333  000.893  000.893: sourcing /Users/jngu/.vim/bundle/fzf.vim/plugin/fzf.vim
2061.010  000.192  000.192: sourcing /Users/jngu/.vim/bundle/vim-peekaboo/autoload/peekaboo.vim
2061.111  000.534  000.342: sourcing /Users/jngu/.vim/bundle/vim-peekaboo/plugin/peekaboo.vim
2061.441  000.092  000.092: sourcing /Users/jngu/.vim/bundle/vim-visual-star-search/plugin/visual-star-search.vim
2061.900  000.213  000.213: sourcing /Users/jngu/.vim/bundle/vim-qf/plugin/qf.vim
2062.590  000.167  000.167: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline.vim
2062.843  000.709  000.542: sourcing /Users/jngu/.vim/bundle/vim-airline/plugin/airline.vim
2063.789  000.093  000.093: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/autoload/provider/pythonx.vim
2064.311  000.215  000.215: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/autoload/remote/host.vim
2064.442  001.029  000.721: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/autoload/provider/python.vim
2064.720  001.641  000.612: sourcing /Users/jngu/.vim/bundle/YouCompleteMe/plugin/youcompleteme.vim
2065.657  000.223  000.223: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/gzip.vim
2065.808  000.022  000.022: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/health.vim
2066.035  000.091  000.091: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/man.vim
2066.682  000.523  000.523: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/matchit.vim
2067.010  000.196  000.196: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/matchparen.vim
2067.663  000.508  000.508: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/netrwPlugin.vim
2068.015  000.204  000.204: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/rplugin.vim
2068.178  000.026  000.026: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/rrhelper.vim
2068.461  000.137  000.137: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/shada.vim
2068.642  000.038  000.038: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/spellfile.vim
2068.963  000.175  000.175: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/tarPlugin.vim
2069.214  000.115  000.115: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/tohtml.vim
2069.398  000.050  000.050: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/tutor.vim
2069.753  000.209  000.209: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/plugin/zipPlugin.vim
2069.781  007.433: loading plugins
2069.916  000.135: loading packages
2070.265  000.071  000.071: sourcing /Users/jngu/.vim/bundle/ale/after/plugin/ale.vim
2070.843  000.311  000.311: sourcing /Users/jngu/.vim/bundle/indentLine/after/plugin/indentLine.vim
2070.913  000.614: loading after plugins
2070.921  000.008: inits 3
2074.445  003.525: reading ShaDa
2077.783  003.338: clearing screen
2078.648  000.333  000.333: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/util.vim
2079.422  000.366  000.366: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/linter.vim
2080.157  000.270  000.270: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions.vim
2080.513  000.065  000.065: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/quickfix.vim
2080.864  000.050  000.050: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/netrw.vim
2081.211  000.049  000.049: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/undotree.vim
2081.632  000.096  000.096: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/hunks.vim
2082.247  000.301  000.301: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/branch.vim
2082.651  000.062  000.062: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/ale.vim
2083.117  000.142  000.142: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/whitespace.vim
2083.775  000.065  000.065: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/wordcount.vim
2084.223  000.165  000.165: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline.vim
2084.590  000.066  000.066: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/autoshow.vim
2085.043  000.114  000.114: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/tabs.vim
2085.546  000.198  000.198: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/buffers.vim
2086.008  000.149  000.149: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/ctrlspace.vim
2089.361  000.224  000.224: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/highlighter.vim
2092.610  000.074  000.074: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/themes.vim
2092.889  000.637  000.563: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/themes/dark.vim
2099.473  000.153  000.153: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/util.vim
2102.845  000.313  000.313: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/builder.vim
2103.561  000.177  000.177: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/default.vim
2130.374  048.598: opening buffers
2130.792  000.223  000.223: sourcing /Users/jngu/.vim/bundle/vim-gitgutter/autoload/gitgutter.vim
2131.222  000.079  000.079: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/pattern_options.vim
2131.522  000.139  000.139: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/events.vim
2131.688  000.873: BufEnter autocommands
2131.692  000.003: editing files in windows
2133.272  000.215  000.215: sourcing /Users/jngu/.vim/bundle/vim-qf/autoload/qf.vim
2134.255  000.197  000.197: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/autoload/provider/python3.vim
2135.271  001.589  001.392: sourcing /Users/jngu/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim
2135.693  000.047  000.047: sourcing /usr/local/Cellar/neovim/0.3.1/share/nvim/runtime/autoload/provider.vim
2179.404  045.862: VimEnter autocommands
2179.414  000.010: before starting main loop
2180.118  000.455  000.455: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/cursor.vim
2181.757  000.126  000.126: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/buflist.vim
2182.222  000.103  000.103: sourcing /Users/jngu/.vim/bundle/vim-airline/autoload/airline/extensions/tabline/formatters/default.vim
2197.954  000.166  000.166: sourcing /Users/jngu/.vim/bundle/ale/autoload/ale/statusline.vim
2199.493  000.381  000.381: sourcing /Users/jngu/.vim/bundle/vim-gitgutter/autoload/gitgutter/hunk.vim
2200.435  019.790: first screen update
2200.437  000.002: --- NVIM STARTED ---

This should profiled and find a way to async the startup, so the initial startup is responsive.

ipwnponies commented 5 years ago

This was caused by local setup. I use brew and set up PATH to point to brew coreutils but did so using command substitution (brew --prefix coreutils), which was introducing 1 second cost to shell startup.

The init.vim makes system() calls to determine python3_host_prog: https://github.com/ipwnponies/dotfiles/blob/cd48b0e239ecb02eb0dcf056b7c7ae8da4b86234/.vimrc#L211-L220 The 2 system calls adds about 1.5 seconds of startup time to neovim.