TabbyML/vim-tabby

vim-tabby slows down the startup time

Opened this issue · 2 comments

When I use vim-tabby, because it can't be lazy loaded (#15), the startup time for my setup increases by 30ms (around 45%).

Here is the startup time without tabby:

       startup: 45.7
event                  time percent plot
init.lua              35.87   78.55 ██████████████████████████
telescope             21.83   47.80 ███████████████▉
nvchad.configs.teles   6.12   13.39 ████▍
telescope._extension   5.02   11.00 ███▋
init.lua               3.97    8.70 ██▉
telescope.previewers   2.89    6.33 ██▏
nvim-treesitter.pars   2.51    5.49 █▉
nvim-treesitter.lua    2.20    4.81 █▋
expanding arguments    1.93    4.23 █▍
telescope.previewers   1.75    3.84 █▎
nvim-treesitter        1.70    3.72 █▎
nvchad                 1.68    3.68 █▎
reading ShaDa          1.63    3.57 █▏
telescope.actions      1.58    3.46 █▏
telescope.sorters      1.55    3.40 █▏
telescope.config       1.45    3.17 █
vim.filetype           1.41    3.08 █
nvim-treesitter.inst   1.39    3.05 █
telescope.pickers      1.38    3.02 █
vim.lsp                1.29    2.83 ▉
nvchad.configs.trees   1.13    2.48 ▉
telescope._extension   1.07    2.35 ▊
telescope.log          1.06    2.31 ▊
vim.treesitter         1.01    2.22 ▊
notify                 1.00    2.19 ▊
telescope.previewers   0.96    2.10 ▊
plenary.log            0.94    2.05 ▋
nvim-treesitter.info   0.93    2.03 ▋
vim.treesitter.langu   0.90    1.97 ▋
vim._defaults          0.80    1.76 ▋
options                0.79    1.72 ▋
nvim-treesitter.conf   0.77    1.69 ▌
plenary.scandir        0.74    1.61 ▌
nvchad.autocmds        0.73    1.60 ▌
sourcing vimrc file(   0.73    1.59 ▌
plugins                0.68    1.49 ▌
plenary.async          0.65    1.43 ▌
nvim-treesitter.quer   0.64    1.39 ▌
notify.instance        0.64    1.39 ▌
configs.lazy           0.61    1.33 ▌
vim.treesitter.query   0.61    1.33 ▌
telescope.finders      0.60    1.31 ▍
nvchad.stl.default     0.59    1.29 ▍
lazy.core.loader       0.57    1.25 ▍
nvchad.options         0.55    1.19 ▍
nvchad.stl.utils       0.51    1.11 ▍
nvconfig               0.47    1.03 ▍
plenary.path           0.45    0.99 ▍
lazy.stats             0.42    0.92 ▎
vim.lsp.protocol       0.42    0.91 ▎
telescope.utils        0.41    0.89 ▎
vim.loader             0.40    0.87 ▎
plenary.popup          0.39    0.85 ▎
conform                0.37    0.81 ▎
vim.lsp.util           0.36    0.79 ▎
init lua interpreter   0.35    0.78 ▎
nvchad.plugins.ui      0.31    0.69 ▎
inits 1                0.31    0.67 ▎
notify.config          0.30    0.67 ▎
plenary.async.async    0.30    0.66 ▎
lazy.core.config       0.29    0.64 ▎
nvchad.plugins         0.29    0.63 ▎
nvim-treesitter.tsra   0.28    0.62 ▎
plenary.async.tests    0.28    0.62 ▎
init highlight         0.28    0.60 ▎
locale set             0.27    0.59 ▎
lazy                   0.25    0.55 ▏
lazy.core.handler      0.24    0.52 ▏
lazy.core.util         0.24    0.52 ▏
telescope.finders.as   0.23    0.49 ▏
plenary.async.util     0.22    0.49 ▏
notify.windows         0.22    0.49 ▏
vim._init_packages     0.22    0.47 ▏
vim.diagnostic         0.21    0.46 ▏
vim.treesitter.langu   0.21    0.46 ▏
vim.uri                0.20    0.45 ▏
lazy.core.handler.ev   0.20    0.44 ▏
lazy.core.handler.ke   0.18    0.40 ▏
nvim-treesitter.ts_u   0.18    0.40 ▏
telescope.actions.se   0.18    0.39 ▏
plenary.vararg         0.18    0.39 ▏
notify.service         0.18    0.39 ▏
nvim-treesitter.util   0.17    0.38 ▏
chadrc                 0.17    0.36 ▏
telescope._            0.16    0.35 ▏
plenary.async.contro   0.16    0.35 ▏
notify.animate         0.16    0.35 ▏
lazy.core.plugin       0.16    0.34 ▏
plenary.job            0.16    0.34 ▏
vim.lsp._snippet_gra   0.16    0.34 ▏
notify.util            0.15    0.34 ▏
vim.treesitter._rang   0.15    0.34 ▏
vim.lsp._changetrack   0.15    0.34 ▏
telescope.pickers.en   0.15    0.33 ▏
lazy.core.handler.ft   0.15    0.33 ▏
syntax.vim             0.15    0.32 ▏
first screen update    0.15    0.32 ▏
vim.fs                 0.14    0.31 ▏
vim.func._memoize      0.13    0.29 ▏
inits 3                0.13    0.29 ▏
telescope              0.13    0.29 ▏
vim.func               0.13    0.29 ▏
early init             0.13    0.28 ▏
telescope.entry_mana   0.13    0.28 ▏
vim._editor            0.13    0.28 ▏
lazy.core.handler.cm   0.12    0.27 ▏
telescope.lua          0.12    0.27 ▏
notify.service.buffe   0.12    0.26 ▏
nvim-treesitter.shel   0.12    0.26 ▏
plenary.vararg.rotat   0.12    0.26 ▏
vim.lsp.rpc            0.12    0.25 ▏
telescope.actions.ut   0.12    0.25 ▏
telescope.make_entry   0.12    0.25 ▏
telescope.actions.st   0.11    0.25 ▏
nvchad.tabufline.laz   0.11    0.24 ▏
nvim-treesitter.cach   0.11    0.24 ▏
vim.version            0.11    0.24 ▏
clipboard.vim          0.10    0.23 ▏
nvim-treesitter.quer   0.10    0.23 ▏
telescope.pickers.wi   0.10    0.23 ▏
plenary.window.borde   0.10    0.22 ▏
telescope.previewers   0.10    0.22 ▏
nvim-treesitter.comp   0.10    0.21 ▏
plenary.async.struct   0.10    0.21 ▏
nvim-treesitter.inde   0.09    0.21 ▏
notify.util.queue      0.09    0.20 ▏
telescope.from_entry   0.09    0.20 ▏
matchparen.vim         0.09    0.20 ▏
filetype.lua           0.09    0.19 ▏
vim.lsp.log            0.09    0.19 ▏
telescope.mappings     0.09    0.19
notify.config.highli   0.09    0.19
telescope.previewers   0.08    0.18
telescope.actions.mt   0.08    0.18
telescope.config.res   0.08    0.18
nvim-treesitter.stat   0.08    0.18
vim.lsp.sync           0.08    0.17
done waiting for UI    0.08    0.17
telescope.pickers.mu   0.08    0.17
nvim-treesitter.high   0.08    0.17
plenary.bit            0.08    0.17
plenary.window         0.07    0.16
telescope.pickers.sc   0.07    0.16
plenary.strings        0.07    0.16
plenary.functional     0.07    0.15
vim.highlight          0.07    0.15
plenary.popup.utils    0.07    0.15
telescope.debounce     0.07    0.15
telescope.pickers.hi   0.07    0.15
telescope._extension   0.07    0.15
plenary.compat         0.07    0.14
before starting main   0.07    0.14
ftplugin.vim           0.07    0.14
telescope.state        0.06    0.14
telescope.algos.link   0.06    0.14
telescope.finders.as   0.06    0.14
telescope.pickers.la   0.06    0.14
event init             0.06    0.13
telescope.finders.as   0.06    0.13
notify.animate.sprin   0.06    0.13
notify.service.buffe   0.06    0.13
telescope._extension   0.06    0.13
notify.service.notif   0.06    0.13
notify.stages.util     0.06    0.13
plenary.tbl            0.06    0.12
plenary.class          0.06    0.12
telescope.deprecated   0.06    0.12
plenary.errors         0.06    0.12
notify.stages          0.05    0.12
opening buffers        0.05    0.11
vim.inspect            0.05    0.11
init first window      0.04    0.08
synload.vim            0.04    0.08
editorconfig.lua       0.04    0.08
vim.shared             0.03    0.07
shada.vim              0.03    0.07
vim._options           0.03    0.07
indent.vim             0.03    0.07
man.lua                0.03    0.06
filetype.lua           0.03    0.05
osc52.lua              0.02    0.05
clear screen           0.02    0.05
ffi                    0.02    0.05
plenary.vim            0.02    0.04
executing command ar   0.02    0.04
UIEnter autocommands   0.01    0.03
window checked         0.01    0.03
VimEnter autocommand   0.01    0.03
inits 2                0.01    0.03
spellfile.vim          0.01    0.02
vim.keymap             0.01    0.02
BufEnter autocommand   0.01    0.02
init default mapping   0.01    0.01
parsing arguments      0.00    0.01
vim.F                  0.00    0.01
--- NVIM STARTING --   0.00    0.00
waiting for UI         0.00    0.00
editing files in win   0.00    0.00
--- NVIM STARTED ---   0.00    0.00

Here is the startup time with tabby:

       startup: 69.1
event                  time percent plot
init.lua              33.70   48.78 ██████████████████████████
VimEnter autocommand  24.73   35.79 ███████████████████▏
telescope             21.70   31.41 ████████████████▊
nvchad.configs.teles   5.87    8.50 ████▌
telescope._extension   5.30    7.68 ████▏
init.lua               3.75    5.43 ██▉
telescope.previewers   2.64    3.82 ██
nvim-treesitter.lua    2.46    3.56 █▉
nvim-treesitter.pars   2.24    3.24 █▊
expanding arguments    2.12    3.07 █▋
nvchad                 2.03    2.94 █▋
nvim-treesitter        1.98    2.86 █▌
telescope.sorters      1.59    2.31 █▎
reading ShaDa          1.59    2.30 █▎
nvim-treesitter.inst   1.56    2.26 █▎
telescope.previewers   1.55    2.25 █▎
telescope.actions      1.55    2.24 █▎
telescope.pickers      1.50    2.17 █▏
vim.lsp                1.35    1.96 █
vim.filetype           1.35    1.95 █
telescope.config       1.25    1.81 █
nvim-treesitter.info   1.11    1.60 ▉
telescope.log          1.07    1.55 ▉
nvim-treesitter.conf   1.00    1.45 ▊
telescope._extension   0.98    1.42 ▊
plenary.log            0.96    1.39 ▊
telescope.previewers   0.95    1.37 ▊
vim.treesitter         0.94    1.36 ▊
notify                 0.91    1.32 ▊
nvim-treesitter.quer   0.81    1.17 ▋
vim._defaults          0.80    1.16 ▋
plenary.scandir        0.76    1.10 ▋
sourcing vimrc file(   0.75    1.09 ▋
nvchad.autocmds        0.75    1.09 ▋
vim.treesitter.langu   0.73    1.06 ▋
plenary.async          0.70    1.02 ▌
nvchad.stl.default     0.68    0.98 ▌
configs.lazy           0.63    0.91 ▌
telescope.finders      0.62    0.90 ▌
plugins                0.62    0.90 ▌
notify.instance        0.58    0.84 ▌
nvchad.stl.utils       0.57    0.83 ▌
options                0.56    0.81 ▍
lazy.core.loader       0.56    0.81 ▍
nvconfig               0.50    0.72 ▍
plenary.path           0.44    0.63 ▍
vim.treesitter.query   0.43    0.62 ▍
telescope.utils        0.42    0.60 ▍
nvchad.options         0.41    0.60 ▍
init lua interpreter   0.40    0.58 ▎
vim.loader             0.40    0.57 ▎
plenary.popup          0.39    0.56 ▎
plenary.async.async    0.38    0.55 ▎
conform                0.38    0.55 ▎
vim.lsp.util           0.38    0.55 ▎
vim.lsp.protocol       0.36    0.52 ▎
nvim-treesitter.tsra   0.36    0.52 ▎
tabby.vim              0.31    0.45 ▎
inits 1                0.31    0.44 ▎
nvchad.plugins.ui      0.31    0.44 ▎
init highlight         0.30    0.43 ▎
lazy.stats             0.29    0.41 ▎
notify.config          0.27    0.39 ▎
locale set             0.26    0.37 ▎
plenary.async.tests    0.25    0.36 ▎
lazy.core.config       0.25    0.36 ▎
lazy                   0.23    0.34 ▏
inits 3                0.23    0.33 ▏
first screen update    0.23    0.33 ▏
telescope.finders.as   0.22    0.32 ▏
vim.version            0.22    0.31 ▏
vim.diagnostic         0.21    0.31 ▏
vim._init_packages     0.21    0.31 ▏
nvchad.plugins         0.21    0.30 ▏
nvim-treesitter.inde   0.21    0.30 ▏
plenary.vararg         0.20    0.30 ▏
nvim-treesitter.quer   0.20    0.29 ▏
lazy.core.handler      0.20    0.29 ▏
vim.uri                0.20    0.29 ▏
lazy.core.handler.ft   0.20    0.29 ▏
telescope.actions.se   0.20    0.28 ▏
plenary.async.util     0.19    0.28 ▏
nvim-treesitter.util   0.18    0.26 ▏
lazy.core.plugin       0.17    0.25 ▏
lazy.core.handler.ev   0.17    0.25 ▏
notify.windows         0.17    0.25 ▏
telescope.entry_mana   0.17    0.25 ▏
nvchad.tabufline.laz   0.17    0.25 ▏
nvim-treesitter.ts_u   0.17    0.25 ▏
notify.service         0.17    0.25 ▏
telescope._            0.16    0.23 ▏
vim.lsp._changetrack   0.16    0.23 ▏
telescope.pickers.en   0.16    0.23 ▏
telescope.make_entry   0.16    0.23 ▏
plenary.job            0.16    0.23 ▏
syntax.vim             0.16    0.23 ▏
vim.lsp._snippet_gra   0.15    0.22 ▏
vim.lsp.rpc            0.15    0.22 ▏
telescope              0.15    0.21 ▏
lazy.core.util         0.14    0.21 ▏
lazy.core.handler.ke   0.14    0.21 ▏
nvim-treesitter.comp   0.14    0.21 ▏
plenary.vararg.rotat   0.14    0.21 ▏
vim.fs                 0.14    0.20 ▏
telescope.lua          0.13    0.19 ▏
chadrc                 0.13    0.19 ▏
early init             0.13    0.19 ▏
plenary.async.contro   0.13    0.19 ▏
vim._editor            0.12    0.18 ▏
nvim-treesitter.stat   0.12    0.18 ▏
plenary.window         0.12    0.17 ▏
nvim-treesitter.shel   0.12    0.17 ▏
notify.service.buffe   0.11    0.17 ▏
notify.util            0.11    0.16 ▏
notify.animate         0.11    0.16 ▏
lazy.core.handler.cm   0.11    0.16 ▏
vim.lsp.log            0.11    0.15 ▏
plenary.window.borde   0.11    0.15 ▏
plenary.errors         0.10    0.15 ▏
vim.func               0.10    0.15 ▏
telescope.actions.mt   0.10    0.15 ▏
telescope.pickers.la   0.10    0.15 ▏
nvim-treesitter.cach   0.10    0.14 ▏
vim.treesitter.langu   0.10    0.14 ▏
telescope.pickers.hi   0.10    0.14 ▏
nvim-treesitter.high   0.09    0.14 ▏
filetype.lua           0.09    0.13 ▏
telescope.mappings     0.09    0.13 ▏
matchparen.vim         0.09    0.13 ▏
telescope.from_entry   0.09    0.12 ▏
telescope.config.res   0.09    0.12 ▏
clipboard.vim          0.09    0.12 ▏
vim.func._memoize      0.09    0.12 ▏
vim.treesitter._rang   0.09    0.12 ▏
vim.highlight          0.09    0.12 ▏
done waiting for UI    0.08    0.12 ▏
nvchad.configs.trees   0.08    0.12 ▏
notify.config.highli   0.08    0.12 ▏
tabby.vim              0.08    0.12 ▏
plenary.strings        0.08    0.11
telescope.previewers   0.08    0.11
telescope._extension   0.08    0.11
plenary.bit            0.08    0.11
telescope.actions.ut   0.08    0.11
vim.lsp.sync           0.08    0.11
telescope.pickers.sc   0.07    0.11
ftplugin.vim           0.07    0.10
plenary.functional     0.07    0.10
telescope.previewers   0.07    0.10
plenary.tbl            0.07    0.10
plenary.popup.utils    0.07    0.10
telescope.actions.st   0.07    0.10
telescope.debounce     0.07    0.10
plenary.compat         0.07    0.10
telescope.state        0.07    0.10
telescope.algos.link   0.06    0.09
notify.service.notif   0.06    0.09
telescope.finders.as   0.06    0.09
telescope.deprecated   0.06    0.09
plenary.async.struct   0.06    0.09
telescope.pickers.wi   0.06    0.09
telescope.finders.as   0.06    0.09
telescope.pickers.mu   0.06    0.09
UIEnter autocommands   0.06    0.09
before starting main   0.06    0.09
telescope._extension   0.06    0.09
event init             0.06    0.08
plenary.class          0.06    0.08
notify.service.buffe   0.06    0.08
notify.stages.util     0.06    0.08
notify.animate.sprin   0.06    0.08
notify.util.queue      0.05    0.08
notify.stages          0.05    0.08
virtual_text.vim       0.05    0.08
job.vim                0.05    0.07
vim.inspect            0.04    0.06
opening buffers        0.04    0.06
BufEnter autocommand   0.04    0.06
agent.vim              0.04    0.06
vim.shared             0.04    0.05
synload.vim            0.04    0.05
init first window      0.04    0.05
vim._options           0.03    0.05
editorconfig.lua       0.03    0.05
shada.vim              0.03    0.05
clear screen           0.03    0.04
indent.vim             0.03    0.04
man.lua                0.03    0.04
plenary.vim            0.02    0.03
osc52.lua              0.02    0.03
filetype.lua           0.02    0.03
ffi                    0.02    0.03
executing command ar   0.02    0.03
window checked         0.02    0.03
globals.vim            0.02    0.02
vim.keymap             0.01    0.02
inits 2                0.01    0.02
keybindings.vim        0.01    0.02
spellfile.vim          0.01    0.01
init default mapping   0.01    0.01
parsing arguments      0.01    0.01
vim.F                  0.00    0.01
waiting for UI         0.00    0.00
editing files in win   0.00    0.00
--- NVIM STARTED ---   0.00    0.00
--- NVIM STARTING --   0.00    0.00

Thank you for bringing up this topic. I will try to add support for lazy loading in the future version.

Interesting that the problem seems to be with telescope, taking up 21 ms with tabby, but only 0.13 ms without it.