1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#!/bin/sh
DATA_DIR="data"
SRC_DIR="../src"
SORTER="$SRC_DIR/sorter"
OUTPUT_STRING="type,size,real,user,sys"
for TEST_FILE in "$DATA_DIR"/*; do
FILE_NAME=$(basename "$TEST_FILE")
echo "Benchmarking $FILE_NAME ..."
# Run the command and capture timing
TIME_OUTPUT=$({ time $SORTER "$TEST_FILE" >/dev/null; } 2>&1)
# Extract real, user, sys in seconds
REAL=$(echo "$TIME_OUTPUT" | awk '/real/ {split($2,a,"m"); split(a[2],b,"s"); print a[1]*60 + b[1]}')
USER=$(echo "$TIME_OUTPUT" | awk '/user/ {split($2,a,"m"); split(a[2],b,"s"); print a[1]*60 + b[1]}')
SYS=$(echo "$TIME_OUTPUT" | awk '/sys/ {split($2,a,"m"); split(a[2],b,"s"); print a[1]*60 + b[1]}')
# Remove prefix and suffix
# type_size_n.tsv
TYPE="${FILE_NAME%%_*}" # before first _
rest="${FILE_NAME#*_}" # after first _
TEST_SIZE="${rest%%_*}" # before next _
# Add entry to JSON string
OUTPUT_STRING="$OUTPUT_STRING
$TYPE,$TEST_SIZE,$REAL,$USER,$SYS"
done
# Write to file
echo "$OUTPUT_STRING" > benchmark_results.csv
|