Skip to content

improve neovim startup performance #6

Description

@dminca

Checkout mason and lsp-zero, see how they would improve performance

Tip

neovim benchmark was triggered by issuing vi --startuptime profile +q and sorted
by issuing this command within the IDE /VIM STARTING/,$ sort! f / [^ ]* /

Latest benchmark results (sorted)
times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

262.001  050.816  046.097: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/coc.nvim/plugin/coc.vim
127.396  016.726  016.111: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/filetype.lua
059.657  012.388  011.126: sourcing /nix/store/2lcbwkdiw4q7srsgs6mlj75kl2c4p026-nvim-init-home-manager.vim
086.283  016.762  008.918: require('vim.treesitter')
141.613  009.804  008.683: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/syntax/syntax.vim
094.339  004.635  004.635: require('nvim-treesitter.parsers')
098.347  038.677  004.588: require('nvim-treesitter.configs')
098.327  034.089  004.167: require('nvim-treesitter.query')
179.511  005.612  003.557: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/matchit.vim
086.268  007.844  003.483: require('vim.treesitter.languagetree')
281.979  006.023  003.457: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/vim-gitgutter/plugin/gitgutter.vim
167.415  002.700  002.700: sourcing /Users/DanielAndrei.Minca/.nix-profile/share/nvim/site/plugin/fzf.vim
096.593  002.248  002.248: require('nvim-treesitter.utils')
085.225  003.338  002.211: require('vim.treesitter.query')
178.685  002.055  002.055: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim
096.662  010.370  001.984: require('nvim-treesitter.tsrange')
269.599  001.789  001.789: require('nvim-treesitter.info')
098.409  052.782  001.717: sourcing /Users/DanielAndrei.Minca/.config/nvim/init.lua
256.288  001.693  001.693: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/coc.nvim/autoload/coc/client.vim
182.553  001.627  001.627: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/netrwPlugin.vim
098.289  001.624  001.624: require('nvim-treesitter.caching')
338.677  001.588  001.588: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/vim-gitgutter/autoload/gitgutter.vim
249.127  001.550  001.550: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/coc.nvim/autoload/coc/rpc.vim
096.625  008.387  001.504: require('nvim-treesitter.ts_utils')
251.811  001.476  001.476: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/coc.nvim/autoload/coc/util.vim
270.588  004.167  001.440: require('nvim-treesitter.install')
280.904  001.301  001.301: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/vim-gitgutter/autoload/gitgutter/highlight.vim
278.283  001.265  001.265: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/vim-gitgutter/autoload/gitgutter/utility.vim
188.002  001.251  001.251: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/tohtml.vim
184.471  001.706  001.204: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/rplugin.vim
086.289  017.928  001.166: require('nvim-treesitter.compat')
085.191  001.128  001.128: require('vim.treesitter.language')
172.734  001.124  001.124: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/gzip.vim
141.403  001.121  001.121: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/syntax/synload.vim
272.269  006.908  001.074: require('nvim-treesitter')
272.940  007.976  001.068: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/nvim-treesitter/plugin/nvim-treesitter.lua
086.251  001.023  001.023: require('vim.treesitter._range')
180.719  001.006  001.006: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/matchparen.vim
270.542  000.938  000.938: require('nvim-treesitter.shell_command_selectors')
272.263  000.911  000.911: require('nvim-treesitter.query_predicates')
271.347  000.756  000.756: require('nvim-treesitter.statusline')
053.933  000.755  000.755: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/colors/murphy.vim
173.664  000.646  000.646: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/health.vim
034.654  000.626  000.626: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/ftplugin.vim
263.450  000.623  000.623: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/nnn.vim/plugin/nnn.vim
113.843  000.615  000.615: sourcing /nix/store/20szsjrnqjilz2kvs9a9f8c1rvgmds3y-vim-pack-dir/pack/myNeovimPackages/start/vim-nix/ftdetect/nix.vim
042.595  000.606  000.606: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/indent.vim
186.495  000.551  000.551: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/tarPlugin.vim
189.257  000.525  000.525: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/zipPlugin.vim
059.542  000.507  000.507: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/colors/murphy.vim
183.897  000.502  000.502: sourcing /nix/store/q36sixzgdvxffm5fh9nzd3lgv19sxm2i-neovim-0.9.5/rplugin.vim
283.354  000.465  000.465: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/vim-nix/plugin/nix.vim
209.348  000.462  000.462: sourcing /nix/store/srr093dflgjw06g2fs1f269lngc31jc5-packdir-start/pack/myNeovimPackages/start/coc-explorer/plugin/coc_explorer.vim
185.155  000.443  000.443: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/shada.vim
191.817  000.411  000.411: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/editorconfig.lua
192.431  000.371  000.371: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/man.lua
185.702  000.290  000.290: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/spellfile.vim
192.917  000.272  000.272: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/nvim.lua
188.547  000.272  000.272: sourcing /nix/store/nxk6lxsm95givrj3qfh8jq8z5v9lvyq4-neovim-unwrapped-0.9.5/share/nvim/runtime/plugin/tutor.vim
002.350  000.210  000.154: require('vim._editor')
016.877  000.154  000.090: require('vim._editor')
016.879  000.295  000.080: require('vim._init_packages')
016.875  000.064  000.064: require('vim._options')
002.133  000.064  000.064: require('vim.shared')
016.720  000.062  000.062: require('vim.shared')
002.352  000.336  000.062: require('vim._init_packages')
002.347  000.056  000.056: require('vim._options')
 clock   elapsed:              other lines
 clock   self+sourced   self:  sourced script
018.511  000.354: init highlight
018.158  000.057: inits 2
018.101  001.214: expanding arguments
016.886  000.535: init lua interpreter
016.056  000.009: parsing arguments
016.047  000.030: window checked
016.017  015.323: inits 1
000.694  000.095: init first window
000.599  000.309: locale set
000.291  000.155: early init
000.135  000.128: event init
000.007  000.007: --- NVIM STARTING ---

times in msec


339.015  000.009: editing files in windows
339.006  000.792: BufEnter autocommands
336.626  000.265: opening buffers
336.360  007.784: reading ShaDa
328.577  000.021: inits 3
328.556  000.014: loading after plugins
328.543  069.205: loading packages
192.973  049.175: loading rtp plugins
098.460  037.213: sourcing vimrc file(s)
007.234  000.792: --cmd commands
006.442  000.295: init default mappings & autocommands
006.147  000.036: clear screen
006.110  000.551: done waiting for UI
005.560  000.002: waiting for UI
005.558  000.340: init highlight
005.218  000.073: inits 2
005.146  002.786: expanding arguments
002.359  000.473: init lua interpreter
001.550  000.009: parsing arguments
001.541  000.034: window checked
001.507  000.529: inits 1
000.978  000.097: init first window
000.881  000.597: locale set
000.284  000.154: early init
000.130  000.123: event init
000.007  000.007: --- NVIM STARTING ---

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions