Try this script:

    #!/bin/bash
    TIMEFORMAT='%R'

    n=1000
    m=20000

    f1   () { :; }

    f2   () { i=0;  time while [ "$((i+=1))" -lt "$n" ]; do     :    ; done
          i=0;  time while [ "$((i+=1))" -lt "$n" ]; do     f1    ; done
        }

    test1() { set -- $(seq $m)
          f2  ""
          f2 "$@"
        }
    test1

To get:

      0.019
      0.028
      0.019
    19.204

Which is a thousand times slower.
Bash 5 is even worse, try:

        time b50sh -c 'f(){ :;};for i do f; done' {0..500}

        real    0m20.709s
        user    0m19.856s
        sys     0m0.024s

Read more detail here:
https://unix.stackexchange.com/questions/462084/bash-has-troubles-using-argument-lists

Reply via email to