aboutsummaryrefslogtreecommitdiff
path: root/benchmark.sh
blob: 3811fc2bea890d5414bfba737d534282e01e4002 (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
#!/bin/sh

DATA_DIR="data"
SRC_DIR="src"
SORTER="$SRC_DIR/sorter"

OUTPUT_STRING="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
    TEST_SIZE=${FILE_NAME#random_}   # removes 'random_'
    TEST_SIZE=${TEST_SIZE%_run*}     # removes '_run...' part

    # Add entry to JSON string
    OUTPUT_STRING="$OUTPUT_STRING
$TEST_SIZE,$REAL,$USER,$SYS"
done

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