Eri Ramos Bastos bastos.eri@gmail.com [shell-script]
2018-10-24 14:26:44 UTC
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!
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!