msys2 'que' é muito lento no Windows 10

0

O comando which nunca foi particularmente rápido, mas desde que mudei para o Windows 10, ele é extremamente lento. Eu tenho um .zshrc genérico que carrego, então ele testa para ver se alguns programas estão disponíveis antes de configurá-los. E as primeiras chamadas levam mais de 10 segundos.

Estou usando o zsh, que tem which interno. Isso pode fazer a diferença, embora definir which() { /usr/bin/which "%@" } não pareça melhorar nada.

Observação: não tenho unidades de rede montadas.

    
por Jan Hudec 26.02.2018 / 11:45

1 resposta

1

Uma solução alternativa e uma abordagem mais agradável, considerando o que você está fazendo neste caso, é evitar o uso de which totalmente, assim:

if (( $+commands[foobar] ))
  # configure foobar
fi

Como isso funciona?

De zshexpn(1) :

${+name}

If name is the name of a set parameter '1' is substituted, otherwise '0' is substituted.

$commands é uma matriz associativa gerenciada por zsh (também a hash builtin) que consiste em nomes de comandos como chaves e seu caminho associado como um valor.

Portanto, usar a expansão ${+name} na tabela de hash $commands , indexada pelo comando que você deseja testar para a existência, oferece uma maneira barata e rápida de fazer essa verificação.

Por fim, a construção (( expr )) é uma avaliação aritmética, pois a expansão ${+name} retorna 0 ou 1.

    
por 25.03.2018 / 06:44