From dd9bd42f521068a8a91978a73291fe9eca1e4c22 Mon Sep 17 00:00:00 2001 From: Michael Lohmann Date: Sat, 2 Aug 2025 23:26:50 +0200 Subject: [PATCH] stats.sh: process files in memory instead of on disk Writing the file to the filesystem for all tags is unnecessary if the content can just be parsed in memory. This improves the performance: Here the output of `time ./stats.sh`: old ./stats.sh 5.96s user 26.53s system 94% cpu 34.533 total new ./stats.sh 5.85s user 22.86s system 102% cpu 28.040 total So a reduction of 6.5s (23%) is achieved even on a computer with a decent SSD. --- stats.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/stats.sh b/stats.sh index 2053501fd..ff4dabea0 100755 --- a/stats.sh +++ b/stats.sh @@ -1,12 +1,13 @@ #!/usr/bin/env bash -echo \n "" > stats.out +# clear file +true > stats.out for TAG_DATE in $(git tag --sort=creatordate --format='%(refname:short),%(creatordate:short)'); do # echo "$TAG_DATE" split=(${TAG_DATE//,/ }) # echo ${split[0]} - git checkout tags/${split[0]} readmeData.json - entries=$(jq '.base.entries' readmeData.json) + entries=$(git show tags/${split[0]}:readmeData.json | jq '.base.entries') + if [[ -z "$entries" ]]; then continue; fi echo ${split[1]},${entries} >> stats.out done