Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could be worth noting in the docs that simply aliasing is faster #19

Open
alextes opened this issue Sep 18, 2019 · 3 comments
Open

Could be worth noting in the docs that simply aliasing is faster #19

alextes opened this issue Sep 18, 2019 · 3 comments

Comments

@alextes
Copy link

alextes commented Sep 18, 2019

With the plugin in my zshrc my startup timings look something like this:

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    1         336.87   336.87   41.83%    336.87   336.87   41.83%  chpwd_trash
 2)    1         778.28   778.28   96.65%    108.21   108.21   13.44%  zgen-init
 3)    1          83.84    83.84   10.41%     83.69    83.69   10.39%  _zsh_nvm_lazy_load
 4)    1          59.25    59.25    7.36%     59.25    59.25    7.36%  _zgen-check-for-updates
 5)    4         131.80    32.95   16.37%     47.98    12.00    5.96%  pmodload
 6)    2          47.20    23.60    5.86%     47.20    23.60    5.86%  compinit
 7)    3          26.29     8.76    3.26%     26.29     8.76    3.26%  mkdir
 8)    1          21.75    21.75    2.70%     21.52    21.52    2.67%  _zsh_highlight_load_highlighters
 9)    1          18.32    18.32    2.28%     18.32    18.32    2.28%  prompt_pure_state_setup
10)    2          18.14     9.07    2.25%     18.14     9.07    2.25%  promptinit
11)    1          11.00    11.00    1.37%     11.00    11.00    1.37%  _zsh_highlight_bind_widgets
12)    2          14.02     7.01    1.74%      7.11     3.55    0.88%  async
13)    1           6.91     6.91    0.86%      6.91     6.91    0.86%  async_init
14)    2          37.33    18.66    4.64%      3.68     1.84    0.46%  prompt_pure_setup
15)   14           3.24     0.23    0.40%      3.24     0.23    0.40%  (anon)
16)   12           2.64     0.22    0.33%      2.64     0.22    0.33%  add-zsh-hook
17)    3           1.12     0.37    0.14%      1.12     0.37    0.14%  is-at-least
18)    3           0.78     0.26    0.10%      0.68     0.23    0.08%  add-zle-hook-widget
19)   22           0.44     0.02    0.05%      0.44     0.02    0.05%  put_template
20)    1          38.37    38.37    4.77%      0.29     0.29    0.04%  set_prompt
21)    1          38.60    38.60    4.79%      0.23     0.23    0.03%  prompt
22)    1           0.20     0.20    0.02%      0.17     0.17    0.02%  zgen
23)    1           0.15     0.15    0.02%      0.15     0.15    0.02%  _zsh_nvm_has
24)    2           0.05     0.02    0.01%      0.05     0.02    0.01%  put_template_var
25)    1           0.03     0.03    0.00%      0.03     0.03    0.00%  is-callable
26)    1           0.03     0.03    0.00%      0.03     0.03    0.00%  zgen-saved
27)    1           0.02     0.02    0.00%      0.02     0.02    0.00%  put_template_custom

That first column and %-column is interesting to look at. Looking deeper zgen-init also spends time mostly on chpwd_trash.

With a simple alias to the python script, instead of the full plugin, my startup looks like this:

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    4         216.78    54.20   44.67%     86.15    21.54   17.75%  pmodload
 2)    1          83.53    83.53   17.21%     83.42    83.42   17.19%  _zsh_nvm_lazy_load
 3)    1          75.15    75.15   15.49%     75.15    75.15   15.49%  _zgen-check-for-updates
 4)    2          47.83    23.92    9.86%     47.83    23.92    9.86%  compinit
 5)    1         467.79   467.79   96.40%     43.60    43.60    8.99%  zgen-init
 6)    1          27.63    27.63    5.69%     27.63    27.63    5.69%  prompt_pure_state_setup
 7)    2          24.82    12.41    5.12%     24.82    12.41    5.12%  promptinit
 8)    2          36.88    18.44    7.60%     20.36    10.18    4.20%  async
 9)    1          16.53    16.53    3.41%     16.53    16.53    3.41%  async_init
10)    3          16.46     5.49    3.39%     16.46     5.49    3.39%  mkdir
11)    1          14.10    14.10    2.91%     13.87    13.87    2.86%  _zsh_highlight_load_highlighters
12)    1          12.97    12.97    2.67%     12.97    12.97    2.67%  _zsh_highlight_bind_widgets
13)   14           6.32     0.45    1.30%      6.32     0.45    1.30%  (anon)
14)   12           3.21     0.27    0.66%      3.21     0.27    0.66%  add-zsh-hook
15)    2          70.64    35.32   14.56%      2.88     1.44    0.59%  prompt_pure_setup
16)    3           1.79     0.60    0.37%      1.58     0.53    0.32%  add-zle-hook-widget
17)    3           0.78     0.26    0.16%      0.78     0.26    0.16%  is-at-least
18)   22           0.75     0.03    0.16%      0.75     0.03    0.16%  put_template
19)    1          71.87    71.87   14.81%      0.40     0.40    0.08%  set_prompt
20)    1          72.06    72.06   14.85%      0.19     0.19    0.04%  prompt
21)    1           0.19     0.19    0.04%      0.16     0.16    0.03%  zgen
22)    1           0.11     0.11    0.02%      0.11     0.11    0.02%  _zsh_nvm_has
23)    2           0.04     0.02    0.01%      0.04     0.02    0.01%  put_template_var
24)    1           0.03     0.03    0.01%      0.03     0.03    0.01%  zgen-saved
25)    1           0.02     0.02    0.00%      0.02     0.02    0.00%  is-callable
26)    1           0.01     0.01    0.00%      0.01     0.01    0.00%  put_template_custom

Much better! In milliseconds, for me, it made ~800ms -> ~500ms.

@alextes
Copy link
Author

alextes commented Sep 18, 2019

Oh and this is an awesome plugin 🙏 !
rm -i doesn't even come close.

@scalp42
Copy link

scalp42 commented Oct 6, 2020

@alextes how did you get this rundown? 😅

@alextes
Copy link
Author

alextes commented Oct 7, 2020

@scalp42 here's a decent write-up explaining how to profile zsh https://stevenvanbael.com/profiling-zsh-startup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants