And here I am all the way up at ~600ms startup lag ($EMPLOYER has a busted Python3 distro that adds a lot of ms each interpreter start-up), but very low prompt lag.

Zach Riggle



On Tue, Nov 30, 2021 at 2:28 AM Mikael Magnusson <mikachu@gmail.com> wrote:
On 11/30/21, Mikael Magnusson <mikachu@gmail.com> wrote:
> On 11/30/21, Roman Perepelitsa <roman.perepelitsa@gmail.com> wrote:
>> On Tue, Nov 30, 2021 at 3:30 AM Zach Riggle <zachriggle@gmail.com> wrote:
>>>
>>> The benchmark I used
>>>
>>> $ hyperfine 'zsh -i -l "exit 0"'
>>>
>>>
>>> Obviously this is not the BEST benchmark [for checking shell startup
>>> time]
>>
>> Obviously. It's the worst or at least a strong contender for the title.
>
> I think it's fine to do this (assuming he actually meant -i -l -c
> "exit 0" (missing -c in the quoted command)), if you don't do any
> weird stuff in your startup files (like you mention in your "how not
> to benchmark" section). Assuming your startup files are synchronous,
> the above will tell you how long it takes to execute your init file
> plus some other overhead, so if you do something and the number is
> lower, the thing you did will indeed make startup faster. If your
> startup files are not synchronous, then obviously nothing I said
> applies and everything you say is true. BTW, the above command can
> easily be improved for worseness:
> % time (repeat 1000; zsh -ic exit)
>
>> Since you care about interactive zsh performance, at least skim
>> through the homepage of zsh-bench. It'll save you time.
>
> % ./zsh-bench
> ==> benchmarking login shell of mikaelh ...
> zsh-bench: cannot find prompt; make sure it contains hostname or the
> last part of the current directory
>
> Sadly no time was saved :(.

Got it running by changing prompt_pat to %,
first_command_lag_ms=48.233
first_prompt_lag_ms=33.816
exit_time_ms=32.177

I'd say these values are fairly comparable :).

It would be very useful to have an option to benchmark normal
interactive shells instead of login shells btw, my profile runs stuff
like fortune which is obviously pretty slow in comparison to startup
code, and not at all interesting to benchmark. TheĀ  quoted times in
this mail is with all the -l removed.

Also, you recommend against zcompiling .zshrc in your document, but
first_command_lag_ms=56.709
first_prompt_lag_ms=42.367
exit_time_ms=40.885

Increasing startup time by 33% seems like a bad tradeoff to me, then
again, I know exactly how things work and am not likely to make the
mistake you mention.

--
Mikael Magnusson