bug-bash
[Top][All Lists]
Advanced

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

Why are long functions slower?


From: Bernhard M. Wiedemann
Subject: Why are long functions slower?
Date: Tue, 10 Oct 2017 15:46:38 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

Hi,

today I was debugging performance issues with a 200KB bash script [1]
with bash-4.3 and 4.4
and it seems that much of it came from a function call that took 0.1
seconds (and it was done in a loop for 37000 files)
even though it basically just consisted of an
  if [[ 0 != 0 ]] ; then


I also wrote this simpler reproducer:

function func1
{
    [[ 0 != 0 ]] || return
    echo neverdone
}

function func2
{
    [[ 0 != 0 ]] || return
    echo neverdone
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
}

time for i in $(seq 30000) ; do
    func1 someparameters
done
time for i in $(seq 30000) ; do
    func2 someparameters
done


showing significant difference in execution time with the longer
function taking 2x to 4x as much time.
Even though the length is comparable, it is not nearly as slow as 0.1s
per call of the original file.

1) could it be that the overall file size or complexity influences the
time it takes for a function to be parsed and executed?

2) is there a way to avoid the slowdown from length of such functions?
I tried
readonly func2
declare -fr func2

but it did not make a difference


Thanks in advance for your insights
Bernhard M.


[1]
https://github.com/g23guy/supportutils/blob/1e89b672d61ac6da5d8cf4a164b529693eab0cd9/bin/supportconfig#L304



reply via email to

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