aboutsummaryrefslogtreecommitdiff
path: root/test/benchmark.sh
blob: d7c69f039b96a2d0ba813cd0239a88651d17539e (plain)
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
34
35
36
37
38
#!/bin/sh

DATA_DIR="data"
SRC_DIR="../src"
SORTER="$SRC_DIR/sorter"
ALGORITHMS=("isort" "qsort")

OUTPUT_STRING="type,size,real,user,sys"

for TEST_FILE in "$DATA_DIR"/*; do
    FILE_NAME=$(basename "$TEST_FILE")

    for ALGORITHM in "${ALGORITHMS[@]}"; do

        echo "Benchmarking $FILE_NAME using $ALGORITHM ..."

        # Run the command and capture timing
        TIME_OUTPUT=$({ time $SORTER -a "$ALGORITHM" "$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
$ALGORITHM"_"$TYPE,$TEST_SIZE,$REAL,$USER,$SYS"
    done
done

# Write to file
echo "$OUTPUT_STRING" > benchmark_results.csv