aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/shellbench/files/patch-shellbench
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/shellbench/files/patch-shellbench')
-rw-r--r--benchmarks/shellbench/files/patch-shellbench80
1 files changed, 80 insertions, 0 deletions
diff --git a/benchmarks/shellbench/files/patch-shellbench b/benchmarks/shellbench/files/patch-shellbench
new file mode 100644
index 000000000000..7a110cc447e1
--- /dev/null
+++ b/benchmarks/shellbench/files/patch-shellbench
@@ -0,0 +1,80 @@
+--- shellbench.orig 2020-08-06 15:07:20 UTC
++++ shellbench
+@@ -12,6 +12,8 @@ COUNT_WIDTH=${SHELLBENCH_COUNT_WIDTH:-10}
+ SHOW_ERROR=''
+ CORRECTION_MODE=''
+ NULLLOOP_COUNT=''
++ALL_SAMPLES=''
++SAMPLE_DIR=%%DATADIR%%
+
+ usage() {
+ cat<<HERE
+@@ -20,10 +22,19 @@ Usage: shellbench [options] files...
+ -s, --shell SHELL[,SHELL...] The shell(s) to run the benchmark. [default: sh]
+ -t, --time SECONDS Benchmark execution time. (SECONDS > 0) [default: 3]
+ -w, --warmup SECONDS Benchmark preparation time. (SECONDS > 0) [default: 1]
++ -a, --allsamples Execute all sample scripts
+ -c, --correct Enable correction mode to eliminate loop overhead.
+ -e, --error Display error details.
+ -h, --help You're looking at it.
++ -l, --listsamples List names of the sample scripts
++
++The sample scripts can be found in %%DATADIR%% .
+ HERE
++if [ -r "%%DOCSDIR%%/README.md" ]; then
++cat<<HERE
++Their format is documented in %%DOCSDIR%%/README.md .
++HERE
++fi
+ }
+
+ preprocess() {
+@@ -313,6 +324,14 @@ display_footer() {
+
+ PARAMS=''
+
++all_samples() {
++ PARAMS="$PARAMS "$(echo %%DATADIR%%/*.sh)
++}
++
++list_samples() {
++ cd %%DATADIR%%; echo *.sh
++}
++
+ abort() { echo "$@" >&2; exit 1; }
+ unknown() { abort "Unrecognized option '$1'"; }
+ required() { [ $# -gt 1 ] || abort "Option '$1' requires an argument"; }
+@@ -327,9 +346,11 @@ parse_options() {
+ -s | --shell ) required "$@" && shift; SHELLS=$1 ;;
+ -t | --time ) required "$@" && shift; BENCHMARK_TIME=$1 ;;
+ -w | --warmup ) required "$@" && shift; WARMUP_TIME=$1 ;;
++ -a | --allsamples ) ALL_SAMPLES=1 ;;
+ -c | --correct) CORRECTION_MODE=1 ;;
+ -e | --error ) SHOW_ERROR=1 ;;
+ -h | --help ) usage; exit ;;
++ -l | --listsamples ) list_samples; exit ;;
+ --) shift; params PARAMS $(($OPTIND - $#)) $OPTIND; break ;;
+ -?*) unknown "$@" ;;
+ *) param PARAMS $(($OPTIND - $#))
+@@ -342,6 +363,11 @@ ${__SOURCED__:+return}
+
+ trap '' HUP
+ parse_options "$@"
++
++[ "$ALL_SAMPLES" ] && all_samples
++
++[ -z "$PARAMS" ] && { usage; exit; }
++
+ eval "set -- $PARAMS"
+
+ [ "$CORRECTION_MODE" ] && NULLLOOP_COUNT=${SHELLBENCH_NULLLOOP_COUNT:-}
+@@ -352,6 +378,9 @@ display_header "$SHELLS"
+ $(printf '%s\n' '#bench "loop only"' '@begin' '@end' | preprocess)
+ HERE
+ for file in "$@"; do
++ [ -r "$file" ] || if [ -r "%%DATADIR%%/$file" ]; then
++ file="%%DATADIR%%/$file"
++ fi
+ preprocess < "$file" | process "${file##*/}"
+ done
+ display_footer