1fd5d1f50459b3930269e68e184c81522036f42a
[c11concurrency-benchmarks.git] / cdschecker_modified_benchmarks / test.sh
1 #!/bin/bash
2
3 EXE=$1
4 TOTAL_RUN=500
5 CDSLIB="/home/vagrant/c11tester"
6 export LD_LIBRARY_PATH=${CDSLIB}
7 export C11TESTER='-x1'
8
9 COUNT_DATA_RACE=0
10 COUNT_TIME=0
11
12 for i in `seq 1 1 $TOTAL_RUN` ; do
13   OUTPUT="$( { time $EXE; } 2>&1 )"
14   RACE="$(echo "$OUTPUT" | grep "race")"
15   if [ -n "$RACE" ] ; then
16     ((++COUNT_DATA_RACE))
17   fi
18
19   USER_TIME="$(echo "$OUTPUT" | grep -o "user..m.\....")"
20   USER_TIME_S="$(echo $USER_TIME | cut -d 'm' -f2 | cut -d '.' -f1)"
21   USER_TIME_MS="$(echo $USER_TIME | cut -d 'm' -f2 | cut -d '.' -f2)"
22
23   SYS_TIME="$(echo "$OUTPUT" | grep -o "sys..m.\....")"
24   SYS_TIME_S="$(echo $SYS_TIME | cut -d 'm' -f2 | cut -d '.' -f1)"
25   SYS_TIME_MS="$(echo $SYS_TIME | cut -d 'm' -f2 | cut -d '.' -f2)"
26
27   TIME_EXE=$((10#$USER_TIME_S * 1000 + 10#$USER_TIME_MS + 10#$SYS_TIME_S * 1000 + 10#$SYS_TIME_MS))
28   COUNT_TIME=$((COUNT_TIME + TIME_EXE))
29 done
30
31 AVG_DATA_RACE=$(echo "${COUNT_DATA_RACE} * 100 / ${TOTAL_RUN}" | bc -l | xargs printf "%.1f")
32 AVG_TIME_INT=$(echo "${COUNT_TIME} / ${TOTAL_RUN} + 0.5" | bc -l | xargs printf "%.0f")
33
34 # -3 / log(1 - p) < n
35 #NO_99=$(echo "-3 / (l(1 - (${AVG_DATA_RACE} / 100)) / l(10)) + 0.5" | bc -l | xargs printf "%.0f")
36 #TIME_99=$(echo "${NO_99} * ${AVG_TIME_INT}" | bc -l)
37
38 echo "Runs: $TOTAL_RUN | Data races: $COUNT_DATA_RACE | Total time: ${COUNT_TIME}ms"
39 echo "Time: ${AVG_TIME_INT}ms | Race rate: ${AVG_DATA_RACE}%"
40 #echo "Time: ${AVG_TIME_INT}ms | Race rate: ${AVG_DATA_RACE}% | No. 99.9%: ${NO_99} | Time 99.9%: ${TIME_99}ms"