aboutsummaryrefslogtreecommitdiff
path: root/test/benchmark.sh
diff options
context:
space:
mode:
authorAndreas Kapp Lindquist <andkaplin05@gmail.com>2025-10-23 17:56:12 +0200
committermithe24 <mithe24@student.sdu.dk>2025-10-29 13:49:57 +0100
commit2bb91575a5a5d033e97c2bb329f18c83eaaaa991 (patch)
treefd47cef799a338deb244e6a394313e9245d88985 /test/benchmark.sh
parentbb687ca28d9da1e161b8e382771fe919fa698b01 (diff)
downloadsorter-2bb91575a5a5d033e97c2bb329f18c83eaaaa991.tar.gz
sorter-2bb91575a5a5d033e97c2bb329f18c83eaaaa991.zip
test(benchmark.sh): moved to test and added support for different types
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