From: Matthias Kruk Date: Wed, 2 Feb 2022 11:20:12 +0000 (+0900) Subject: include/array: Improve performance of array_to_lines() X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=7a62d607cd963ae917dc96e6c51f67c6bb650e2b;p=toolbox include/array: Improve performance of array_to_lines() `array_to_lines()` calls `echo` for every element in the array, which is wasteful and scales very poorly. This commit modifies `array_to_lines()` so that it uses a single call to `printf` to print all array elements. This issue was pointed out by reddit user u/oh5nxo. --- diff --git a/include/array.sh b/include/array.sh index 7008b59..de5b820 100644 --- a/include/array.sh +++ b/include/array.sh @@ -37,11 +37,11 @@ array_contains() { array_to_lines() { local array=("$@") - local item - for item in "${array[@]}"; do - echo "$item" - done + # Don't print an empty line if array is empty + if (( ${#array[@]} > 0 )); then + printf "%s\n" "${array[@]}" + fi } array_sort() {