From 0bd4793492e528e812709b1f0278e09cb8e100cd Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Wed, 29 May 2019 00:56:10 +0100 Subject: [PATCH] buildsystem: avoid process forks to init dashboard status file A typical image build will update the dashboard 3500-4500 times. This change avoids two process forks (cat, wc) per update, and the remaining $(< file) is faster than $(cat file). --- config/functions | 7 +++++-- config/multithread | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config/functions b/config/functions index 2c5529b70f..85579cf4de 100644 --- a/config/functions +++ b/config/functions @@ -1322,8 +1322,11 @@ update_dashboard() { sedline=$((MTJOBID + 2)) - num=$(cat "${THREAD_CONTROL}/status" | wc -l) - while [ ${num} -lt ${sedline} ]; do echo "" >>"${THREAD_CONTROL}/status"; num=$((num + 1)); done + num=$(< "${THREAD_CONTROL}/status.max") + if [ ${num} -lt ${sedline} ]; then + echo ${sedline} >"${THREAD_CONTROL}/status.max" + for i in $(seq $((num + 1)) ${sedline}); do echo "" >>"${THREAD_CONTROL}/status"; done + fi num=$(< "${THREAD_CONTROL}/progress.prev") projdevarch="${PROJECT}/" diff --git a/config/multithread b/config/multithread index 902c6f5a83..ca389cddbe 100644 --- a/config/multithread +++ b/config/multithread @@ -144,6 +144,7 @@ start_multithread_build() { mkdir -p "${THREAD_CONTROL}/locks" echo -1 >"${THREAD_CONTROL}/progress.prev" echo 0 >"${THREAD_CONTROL}/progress" + echo 0 >"${THREAD_CONTROL}/status.max" touch "${THREAD_CONTROL}/status" [ "${THREADCOUNT}" = "0" ] && THREADCOUNT=1