shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Array mais lento do que "-f $aquivo"


From: Julio C. Neves
Subject: Re: [shell-script] Array mais lento do que "-f $aquivo"
Date: Wed, 24 Oct 2018 12:08:44 -0300

Fala Eri
Acho vc ganharia performance se fizesse:

check_role() {
local ROLES=($(ls /etc/roles)) || return 1
for r in "${ROLES[@]}"; do
[[ "$r" == "$1" ]] && return 0
done
}

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 
»  Treinamento presencial (em 4 sábados) no RJ e BSB 
    em http://bit.ly/cursoshelljulioneves                   



Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.



Em qua, 24 de out de 2018 às 11:41, Eri Ramos Bastos address@hidden [shell-script] <address@hidden> escreveu:
 

Olá, lista!

Tenho um script que roda a seguinte função ~300 vezes (sourced de outro arquivo):

check_role() {
if [ -d /etc/roles/ ]; then
if [ -f /etc/roles/$1 ]; then
return 0
fi
fi
return 1
}

Pensei que iria ganhar performance fazendo isso:

list_roles() {
if [ -d /etc/roles/ ]; then
cd /etc/roles
ls
else
echo ""
fi

}

export ROLES=($(list_roles))
check_role() {
local role=$1
for r in "${ROLES[@]}"; do
[[ "$r" == "$role" ]] && return 0
done
return 1

}

Mas na verdade o tempo de execução piorou:

Original:
real    0m2.069s 
user    0m0.300s 
sys     0m1.644s

Novo:
real    0m2.857s
user    0m0.348s
sys     0m2.296s


Me parece contra-intuitivo, já que o original precisa checar em disco todas as vezes. Onde estou errado?

Obrigado!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]