aboutsummaryrefslogtreecommitdiff
path: root/test/benchmark.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/benchmark.sh')
-rwxr-xr-xtest/benchmark.sh33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/benchmark.sh b/test/benchmark.sh
new file mode 100755
index 0000000..2f0d90b
--- /dev/null
+++ b/test/benchmark.sh
@@ -0,0 +1,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