TabbyML / vim-tabby

Apache License 2.0
54 stars 2 forks source link

vim-tabby slows down the startup time #16

Open realhackcraft opened 5 months ago

realhackcraft commented 5 months ago

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
icycodes commented 5 months ago

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

realhackcraft commented 5 months ago

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