[PATCH] benchtests: Add a script to merge two benchout string files
Naohiro Tamura
naohirot@fujitsu.com
Mon Jul 26 08:35:16 GMT 2021
This patch adds a script to merge two benchout string files into one
in terms of an ifunc in order to create a comparison graph.
Usage: merge_strings4graph.sh ifunc_name graph_tag1 graph_tag2
read two benchout string files from standard input
write merged benchout string file to standard output
ex:
$ cat master/bench-memset.out patch/bench-memset.out | \
> merge_strings4graph.sh __memset_generic master patch | \
> plot_strings.py -l -p thru -v -
---
benchtests/scripts/merge_strings4graph.sh | 57 +++++++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100755 benchtests/scripts/merge_strings4graph.sh
diff --git a/benchtests/scripts/merge_strings4graph.sh b/benchtests/scripts/merge_strings4graph.sh
new file mode 100755
index 000000000000..ac38b6327f01
--- /dev/null
+++ b/benchtests/scripts/merge_strings4graph.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+# Copyright (C) 2021 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
+
+#
+# Merge two benchout string files into one in terms of an ifunc
+# in order to create a comparison graph
+#
+if [[ $1 == "-h" ]] || [[ $# != 3 ]]; then
+ echo "Usage: ${0##*/} ifunc_name graph_tag1 graph_tag2"
+ echo " read two benchout string files from standard input"
+ echo " write merged benchout string file to standard output"
+ echo "ex:"
+ echo " $ cat bench-memset-first.out bench-memset-second.out | \\
+ > ${0##*/} __memset_generic graph_tag1 graph_tag2 | \\
+ > plot_strings.py -l -p thru -v -"
+exit 1
+fi
+
+jq -rs --arg ifunc_name $1 --arg graph_tag1 $2 --arg graph_tag2 $3 '
+. as $root |
+.[0] as $first |
+$first.functions.memset.ifuncs |
+ length as $ifuncs_len |
+ index($ifunc_name) as $ifunc_index |
+$root |
+ del(.[].functions.memset.results[].timings[$ifunc_index+1:$ifuncs_len]) |
+ del(.[].functions.memset.results[].timings[0:$ifunc_index]) |
+ [.[].functions.memset.results] | transpose as $pair |
+$pair |
+ reduce range(0; $pair|length) as $i (
+ []; . + [$pair[$i][0].timings+$pair[$i][1].timings]
+ ) | . as $newtimings |
+ reduce range(0; $pair|length) as $j (
+ []; . + [{"length":$first.functions.memset.results[$j].length,
+ "timings":$newtimings[$j]}]
+ ) | . as $newresults |
+$first |
+ .functions.memset."bench-variant"+="-"+$graph_tag1+"-"+$graph_tag2 |
+ .functions.memset.ifuncs=[$ifunc_name+"-"+$graph_tag1,$ifunc_name+"-"+$graph_tag2] |
+ .functions.memset.results=$newresults
+'
+
--
2.17.1
More information about the Libc-alpha
mailing list