nvm icon indicating copy to clipboard operation
nvm copied to clipboard

zsh initialization performance

Open maquejp opened this issue 6 months ago • 3 comments

Operating system and version:

nvm debug output:

nvm --version: v0.40.0
$SHELL: /usr/bin/zsh
$SHLVL: 1
whoami: 'devlin'
${HOME}: /home/devlin
${NVM_DIR}: '${HOME}/.nvm'
${PATH}: /opt/oracle/instantclient_21_5:${HOME}/Developments/flutter/bin:${HOME}/Developments/flutter/bin:/usr/local/bin:${NVM_DIR}:${NVM_DIR}/versions/node/v20.12.2/bin:${HOME}/development/flutter/bin:${HOME}/.cargo/bin:${HOME}/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/sbin:/usr/local/bin:/snap/bin:/snap/bin:${HOME}/.local/share/JetBrains/Toolbox/scripts
$PREFIX: ''
${NPM_CONFIG_PREFIX}: ''
$NVM_NODEJS_ORG_MIRROR: ''
$NVM_IOJS_ORG_MIRROR: ''
shell version: 'zsh 5.8.1 (x86_64-ubuntu-linux-gnu)'
uname -a: 'Linux 6.5.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 15 16:40:02 UTC 2 x86_64 x86_64 x86_64 GNU/Linux'
checksum binary: 'sha256sum'
OS version: Ubuntu 22.04.4 LTS  
random-funcs:       srandom/random
regex-funcs:        internal
compiled limits:
sprintf buffer      8192
maximum-integer     2147483647
awk: /usr/bin/awk, mawk 1.3.4 20200120
curl: /usr/bin/curl, curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.18
wget: /usr/bin/wget, GNU Wget 1.21.2 built on linux-gnu.
git: /usr/bin/git, git version 2.34.1
ls: cannot access 'grep:': No such file or directory
grep: grep: aliased to grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox} (grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}), grep (GNU grep) 3.7
sed: /usr/bin/sed, sed (GNU sed) 4.8
cut: /usr/bin/cut, cut (GNU coreutils) 8.32
basename: /usr/bin/basename, basename (GNU coreutils) 8.32
rm: /usr/bin/rm, rm (GNU coreutils) 8.32
mkdir: /usr/bin/mkdir, mkdir (GNU coreutils) 8.32
xargs: /usr/bin/xargs, xargs (GNU findutils) 4.8.0
nvm current: v20.12.2
which node: ${NVM_DIR}/versions/node/v20.12.2/bin/node
which iojs: iojs not found
which npm: ${NVM_DIR}/versions/node/v20.12.2/bin/npm
npm config get prefix: ${NVM_DIR}/versions/node/v20.12.2
npm root -g: ${NVM_DIR}/versions/node/v20.12.2/lib/node_modules

nvm ls output:

->     v20.12.2
default -> node (-> v20.12.2)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v20.12.2) (default)
stable -> 20.12 (-> v20.12.2) (default)
lts/* -> lts/iron (-> v20.12.2)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.2 (-> N/A)
lts/iron -> v20.12.2

How did you install nvm?

install script in readme

What steps did you perform?

Opening a Terminal (Ubuntu)

What happened?

The terminal take long time since a few days to "initialise", I am using zsh and oh-my-zsh In addition the nvm command are also slow

I have zprofed

num calls time self name

  1. 1 20891.60 20891.60 97.38% 11980.82 11980.82 55.85% nvm_auto
  2. 2 8901.02 4450.51 41.49% 6244.29 3122.14 29.11% nvm
  3. 1 1582.49 1582.49 7.38% 1576.41 1576.41 7.35% nvm_ensure_version_installed
  4. 2 1019.62 509.81 4.75% 1019.62 509.81 4.75% nvm_grep

What did you expect to happen?

Quicker access to my cmd line as now it take a few seconds to load it

Is there anything in any of your profile files that modifies the PATH?

zmodload zsh/zprof

if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi

Path to your oh-my-zsh installation.

export ZSH="$HOME/.oh-my-zsh" ZSH_THEME="powerlevel10k/powerlevel10k" zstyle ':omz:update' mode auto # update automatically without asking zstyle ':omz:plugins:nvm' lazy yes plugins=(git python docker docker-compose zsh-autosuggestions) source $ZSH/oh-my-zsh.sh alias dcd="docker compose down" alias dcu="docker compose up -d" alias dcl="() {docker logs -f $1}" alias dcr="dcd ; dcu" export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion export PATH="$NVM_DIR:$PATH" export PATH="/usr/local/bin:$PATH" export ANDROID_HOME=/home/devlin/Android/Sdk export ANDROID_NDK=/home/devlin/Android/Sdk/ndk export PATH="$HOME/Developments/flutter/bin:$PATH" export PATH="/home/devlin/Developments/flutter/bin:$PATH" export PATH="/opt/oracle/instantclient_21_5:$PATH" export LD_LIBRARY_PATH="/opt/oracle/instantclient_21_5:$LD_LIBRARY_PATH"

Load Angular CLI autocompletion.

source <(ng completion script)

To customize prompt, run p10k configure or edit ~/.p10k.zsh.

[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

zprof

maquejp avatar Aug 14 '24 06:08 maquejp