@@ -54,31 +54,48 @@ jobs:
5454 BASE_MEMORY=$(cat ./artifacts/memory-base.json)
5555 HEAD_MEMORY=$(cat ./artifacts/memory-head.json)
5656
57- calc() {
58- BASE=$(echo "$BASE_MEMORY" | jq -r '.memory.'"$1"' // 0')
59- HEAD=$(echo "$HEAD_MEMORY" | jq -r '.memory.'"$1"' // 0')
60-
61- DIFF=$((HEAD - BASE))
62- if [ "$BASE" -gt 0 ]; then
63- DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE" | bc)
64- else
65- DIFF_PERCENT=0
66- fi
67-
68- # Convert KB to MB for readability
69- BASE_MB=$(echo "scale=2; $BASE / 1024" | bc)
70- HEAD_MB=$(echo "scale=2; $HEAD / 1024" | bc)
71- DIFF_MB=$(echo "scale=2; $DIFF / 1024" | bc)
72-
73- echo "$1-base=$BASE_MB" >> "$GITHUB_OUTPUT"
74- echo "$1-head=$HEAD_MB" >> "$GITHUB_OUTPUT"
75- echo "$1-diff=$DIFF_MB" >> "$GITHUB_OUTPUT"
76- echo "$1-diff_percent=$DIFF_PERCENT" >> "$GITHUB_OUTPUT"
57+ variation() {
58+ calc() {
59+ BASE=$(echo "$BASE_MEMORY" | jq -r ".${1}.${2} // 0")
60+ HEAD=$(echo "$HEAD_MEMORY" | jq -r ".${1}.${2} // 0")
61+
62+ DIFF=$((HEAD - BASE))
63+ if [ "$BASE" -gt 0 ]; then
64+ DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE" | bc)
65+ else
66+ DIFF_PERCENT=0
67+ fi
68+
69+ # Convert KB to MB for readability
70+ BASE_MB=$(echo "scale=2; $BASE / 1024" | bc)
71+ HEAD_MB=$(echo "scale=2; $HEAD / 1024" | bc)
72+ DIFF_MB=$(echo "scale=2; $DIFF / 1024" | bc)
73+
74+ JSON=$(jq -c -n \
75+ --arg base "$BASE_MB" \
76+ --arg head "$HEAD_MB" \
77+ --arg diff "$DIFF_MB" \
78+ --arg diff_percent "$DIFF_PERCENT" \
79+ '{base: $base, head: $head, diff: $diff, diff_percent: $diff_percent}')
80+
81+ echo "$JSON"
82+ }
83+
84+ JSON=$(jq -c -n \
85+ --argjson VmRSS "$(calc $1 VmRSS)" \
86+ --argjson VmHWM "$(calc $1 VmHWM)" \
87+ --argjson VmSize "$(calc $1 VmSize)" \
88+ '{VmRSS: $VmRSS, VmHWM: $VmHWM, VmSize: $VmSize}')
89+
90+ echo "$JSON"
7791 }
7892
79- calc VmRSS
80- calc VmHWM
81- calc VmSize
93+ JSON=$(jq -c -n \
94+ --argjson beforeGc "$(variation beforeGc)" \
95+ --argjson afterGc "$(variation afterGc)" \
96+ '{beforeGc: $beforeGc, afterGc: $afterGc}')
97+
98+ echo "res=$JSON" >> "$GITHUB_OUTPUT"
8299 - id : build-comment
83100 name : Build memory comment
84101 run : |
@@ -88,15 +105,33 @@ jobs:
88105 echo "$HEADER" > ./output.md
89106 echo >> ./output.md
90107
91- echo "| Metric | base | head | Diff |" >> ./output.md
92- echo "|--------|------|------|------|" >> ./output.md
93- echo "| RSS | ${{ steps.compare.outputs.VmRSS-base }} MB | ${{ steps.compare.outputs.VmRSS-head }} MB | ${{ steps.compare.outputs.VmRSS-diff }} MB (${{ steps.compare.outputs.VmRSS-diff_percent }}%) |" >> ./output.md
94- echo "| HWM | ${{ steps.compare.outputs.VmHWM-base }} MB | ${{ steps.compare.outputs.VmHWM-head }} MB | ${{ steps.compare.outputs.VmHWM-diff }} MB (${{ steps.compare.outputs.VmHWM-diff_percent }}%) |" >> ./output.md
95- echo "| VMS | ${{ steps.compare.outputs.VmSize-base }} MB | ${{ steps.compare.outputs.VmSize-head }} MB | ${{ steps.compare.outputs.VmSize-diff }} MB (${{ steps.compare.outputs.VmSize-diff_percent }}%) |" >> ./output.md
108+ table() {
109+ line() {
110+ BASE=$(echo "${{ steps.compare.outputs.res }}" | jq -r ".${1}.${2}.base")
111+ HEAD=$(echo "${{ steps.compare.outputs.res }}" | jq -r ".${1}.${2}.head")
112+ DIFF=$(echo "${{ steps.compare.outputs.res }}" | jq -r ".${1}.${2}.diff")
113+ DIFF_PERCENT=$(echo "${{ steps.compare.outputs.res }}" | jq -r ".${1}.${2}.diff_percent")
114+
115+ echo "| ${2} | ${BASE} MB | ${HEAD} MB | ${DIFF} MB (${DIFF_PERCENT}%) |" >> ./output.md
116+ }
117+
118+ echo "| Metric | base | head | Diff |" >> ./output.md
119+ echo "|--------|------|------|------|" >> ./output.md
120+ line $1 VmRSS
121+ line $1 VmHWM
122+ line $1 VmSize
123+ }
124+
125+ echo "### Before GC" >> ./output.md
126+ table beforeGc
127+ echo >> ./output.md
128+
129+ echo "### After GC" >> ./output.md
130+ table afterGc
96131 echo >> ./output.md
97132
98133 # Determine if this is a significant change (more than 5% increase)
99- if [ "$(echo "${{ steps.compare.outputs.VmRSS-diff_percent }} > 5" | bc )" -eq 1 ]; then
134+ if [ "$(echo "${{ steps.compare.outputs.res }}" | jq -r '.afterGc.VmRSS.diff_percent | tonumber > 5' )" = "true" ]; then
100135 echo "⚠️ **Warning**: Memory usage has increased by more than 5%. Please verify this is not an unintended change." >> ./output.md
101136 echo >> ./output.md
102137 fi
0 commit comments