From 7a62d607cd963ae917dc96e6c51f67c6bb650e2b Mon Sep 17 00:00:00 2001 From: Matthias Kruk Date: Wed, 2 Feb 2022 20:20:12 +0900 Subject: [PATCH] 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. --- include/array.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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() { -- 2.47.3