1
1
#! /bin/bash
2
2
3
3
# Copyright 2014-2016 Samsung Electronics Co., Ltd.
4
+ # Copyright 2016 University of Szeged.
4
5
#
5
6
# Licensed under the Apache License, Version 2.0 (the "License");
6
7
# you may not use this file except in compliance with the License.
@@ -26,9 +27,21 @@ function exit_err() {
26
27
exit 1
27
28
}
28
29
29
- USAGE=" Usage:\n sudo run.sh OLD_ENGINE NEW_ENGINE REPEATS TIMEOUT BENCH_FOLDER OUTPUT_FORMAT"
30
+ # Check if the specified build supports memory statistics options
31
+ function is_mem_stats_build() {
32
+ [ -x " $1 " ] || fail_msg " Engine '$1 ' is not executable"
30
33
31
- if [ " $# " -ne 6 ]
34
+ tmpfile=` mktemp`
35
+ " $1 " --mem-stats $tmpfile 2>&1 | grep -- " Ignoring memory statistics option because of '!MEM_STATS' build configuration." 2>&1 > /dev/null
36
+ code=$?
37
+ rm $tmpfile
38
+
39
+ return $code
40
+ }
41
+
42
+ USAGE=" Usage:\n tools/run-perf-test.sh OLD_ENGINE NEW_ENGINE REPEATS TIMEOUT BENCH_FOLDER [-m result-file-name.md]"
43
+
44
+ if [ " $# " -lt 5 ]
32
45
then
33
46
echo -e " ${USAGE} "
34
47
exit_err " Argument number mismatch..."
@@ -40,13 +53,20 @@ REPEATS="$3"
40
53
TIMEOUT=" $4 "
41
54
BENCH_FOLDER=" $5 "
42
55
OUTPUT_FORMAT=" $6 "
56
+ OUTPUT_FILE=" $7 "
43
57
44
- if [ " ${OUTPUT_FORMAT} " != " -m " ]
58
+ if [ " $# " -gt 5 ]
45
59
then
46
- if [ " ${OUTPUT_FORMAT} " != " -c " ]
60
+ if [ " ${OUTPUT_FORMAT} " != " -m " ]
47
61
then
48
- exit_err " Please, use -m or -c as output format specifier "
62
+ exit_err " Please, use ' -m result-file-name.md' as last arguments "
49
63
fi
64
+ if [ -z " ${OUTPUT_FILE} " ]
65
+ then
66
+ exit_err " Missing md file name. Please, define the filename. Ex.: '-m result-file-name.md'"
67
+ fi
68
+
69
+ rm -rf " ${OUTPUT_FILE} "
50
70
fi
51
71
52
72
if [ " ${REPEATS} " -lt 1 ]
@@ -164,13 +184,13 @@ function run-compare()
164
184
if [ " ${OUTPUT_FORMAT} " == " -m" ]
165
185
then
166
186
WIDTH=42
167
- DIFF =$( printf " %s%s" " $DIFF " " $( printf " %$(( $WIDTH - ${# DIFF} )) s" ) " )
168
- PERCENT =$( printf " %s%s" " $( printf " %$(( $WIDTH - ${# PERCENT} )) s" ) " " $PERCENT " )
187
+ MD_DIFF =$( printf " %s%s" " $DIFF " " $( printf " %$(( $WIDTH - ${# DIFF} )) s" ) " )
188
+ MD_PERCENT =$( printf " %s%s" " $( printf " %$(( $WIDTH - ${# PERCENT} )) s" ) " " $PERCENT " )
169
189
170
- format=" \` %s\` <br>\` %s\` "
171
- else
172
- format=" %20s : %19s"
190
+ MD_FORMAT=" \` %s\` <br>\` %s\` "
173
191
fi
192
+
193
+ CONSOLE_FORMAT=" %20s : %19s"
174
194
else
175
195
ext=" "
176
196
@@ -185,13 +205,13 @@ function run-compare()
185
205
if [ " ${OUTPUT_FORMAT} " == " -m" ]
186
206
then
187
207
WIDTH=20
188
- DIFF =$( printf " %s%s" " $DIFF " " $( printf " %$(( $WIDTH - ${# DIFF} )) s" ) " )
189
- PERCENT =$( printf " %s%s" " $( printf " %$(( $WIDTH - ${# PERCENT} )) s" ) " " $PERCENT " )
208
+ MD_DIFF =$( printf " %s%s" " $DIFF " " $( printf " %$(( $WIDTH - ${# DIFF} )) s" ) " )
209
+ MD_PERCENT =$( printf " %s%s" " $( printf " %$(( $WIDTH - ${# PERCENT} )) s" ) " " $PERCENT " )
190
210
191
- format=" \` %s\` <br>\` %s\` "
192
- else
193
- format=" %14s : %8s"
211
+ MD_FORMAT=" \` %s\` <br>\` %s\` "
194
212
fi
213
+
214
+ CONSOLE_FORMAT=" %14s : %8s"
195
215
fi
196
216
197
217
rel_mult=$( echo " $rel_mult " " $rel " | awk ' {print $1 * $2;}' )
@@ -200,10 +220,10 @@ function run-compare()
200
220
201
221
if [ " ${OUTPUT_FORMAT} " == " -m" ]
202
222
then
203
- printf " $format " " $DIFF " " $PERCENT " | sed " s/ /$FIGURE_SPACE /g"
204
- else
205
- printf " $format " " $DIFF " " $PERCENT "
223
+ printf " $MD_FORMAT " " $MD_DIFF " " $MD_PERCENT " | sed " s/ /$FIGURE_SPACE /g" >> " ${OUTPUT_FILE} "
206
224
fi
225
+
226
+ printf " $CONSOLE_FORMAT " " $DIFF " " $PERCENT "
207
227
}
208
228
209
229
function run-test()
@@ -213,13 +233,31 @@ function run-test()
213
233
# print only filename
214
234
if [ " ${OUTPUT_FORMAT} " == " -m" ]
215
235
then
216
- printf " %s | " " ${TEST##*/ } "
236
+ printf " %s | " " ${TEST##*/ } " >> " ${OUTPUT_FILE} "
237
+ fi
238
+
239
+ printf " %50s | " " ${TEST##*/ } "
240
+
241
+ if [ " $IS_MEM_STAT " -ne 0 ]
242
+ then
243
+ run-compare " ./tools/mem-stats-measure.sh" " mem" " ${TEST} " 0 || return 1
217
244
else
218
- printf " %50s | " " ${TEST##*/ } "
245
+ run-compare " ./tools/rss-measure.sh" " mem" " ${TEST} " 0 k || return 1
246
+ fi
247
+
248
+ if [ " ${OUTPUT_FORMAT} " == " -m" ]
249
+ then
250
+ printf " | " >> " ${OUTPUT_FILE} "
219
251
fi
220
- run-compare " ./tools/rss-measure.sh " " mem " " ${TEST} " 0 k || return 1
252
+
221
253
printf " | "
222
254
run-compare " ./tools/perf.sh ${REPEATS} " " perf" " ${TEST} " 3 s || return 1
255
+
256
+ if [ " ${OUTPUT_FORMAT} " == " -m" ]
257
+ then
258
+ printf " \n" >> " ${OUTPUT_FILE} "
259
+ fi
260
+
223
261
printf " \n"
224
262
}
225
263
@@ -235,12 +273,25 @@ function run-suite()
235
273
236
274
date
237
275
276
+ is_mem_stats_build " ${ENGINE_OLD} " || is_mem_stats_build " ${ENGINE_NEW} "
277
+ IS_MEM_STAT=$?
278
+
238
279
if [ " ${OUTPUT_FORMAT} " == " -m" ]
239
280
then
240
- echo " Benchmark | RSS<br>(+ is better) | Perf<br>(+ is better)"
241
- echo " ---------: | --------- | ---------"
281
+ if [ " $IS_MEM_STAT " -ne 0 ]
282
+ then
283
+ echo " Benchmark | Peak alloc.<br>(+ is better) | Perf<br>(+ is better)" >> " ${OUTPUT_FILE} "
284
+ else
285
+ echo " Benchmark | RSS<br>(+ is better) | Perf<br>(+ is better)" >> " ${OUTPUT_FILE} "
286
+ fi
287
+ echo " ---------: | --------- | ---------" >> " ${OUTPUT_FILE} "
288
+ fi
289
+
290
+ if [ " $IS_MEM_STAT " -ne 0 ]
291
+ then
292
+ printf " %50s | %25s | %35s\n" " Benchmark" " Peak alloc.(+ is better)" " Perf(+ is better)"
242
293
else
243
- printf " %50s | %25s | %35s\n" " Benchmark" " RSS<br> (+ is better)" " Perf<br> (+ is better)"
294
+ printf " %50s | %25s | %35s\n" " Benchmark" " RSS(+ is better)" " Perf(+ is better)"
244
295
fi
245
296
246
297
run-suite " ${BENCH_FOLDER} "
@@ -288,11 +339,11 @@ if [ "${OUTPUT_FORMAT}" == "-m" ]
288
339
then
289
340
mem_percent_gmean_text=$( printf " RSS reduction: \` %0.3f%%\` " " $mem_percent_gmean " )
290
341
perf_percent_gmean_text=$( printf " Speed up: \` %0.3f%% %s\` " " $perf_percent_gmean " " $perf_percent_inaccuracy " )
291
- printf " %s | %s | %s\n" " $gmean_label_text " " $mem_percent_gmean_text " " $perf_percent_gmean_text "
292
- else
293
- mem_percent_gmean_text=$( printf " RSS reduction: %0.3f%%" " $mem_percent_gmean " )
294
- perf_percent_gmean_text=$( printf " Speed up: %0.3f%% %s" " $perf_percent_gmean " " $perf_percent_inaccuracy " )
295
- printf " %50s | %25s | %51s\n" " $gmean_label_text " " $mem_percent_gmean_text " " $perf_percent_gmean_text "
342
+ printf " %s | %s | %s\n" " $gmean_label_text " " $mem_percent_gmean_text " " $perf_percent_gmean_text " >> " ${OUTPUT_FILE} "
296
343
fi
297
344
345
+ mem_percent_gmean_text=$( printf " RSS reduction: %0.3f%%" " $mem_percent_gmean " )
346
+ perf_percent_gmean_text=$( printf " Speed up: %0.3f%% %s" " $perf_percent_gmean " " $perf_percent_inaccuracy " )
347
+ printf " %50s | %25s | %51s\n" " $gmean_label_text " " $mem_percent_gmean_text " " $perf_percent_gmean_text "
348
+
298
349
date
0 commit comments