-#!/usr/bin/bash
+#!/usr/bin/env bash
-mkdir -p plot-data
-cd plot-data
+USE_FPS=0
+SORT=0
-for log in "$@"
+while getopts "fs" opt
do
- tracker_version=${log#*-}
- tracker_version=${tracker_version%/*}
-
- dataset=${log#*/}
- dataset=${dataset#*-}
- dataset=${dataset%-*}
-
- mkdir -p "$dataset"
+ case $opt in
+ f)
+ USE_FPS=1
+ ;;
+ s)
+ SORT=1
+ ;;
+ \?)
+ echo "Invalid option -$OPTARG" >&2
+ exit 1
+ ;;
+ esac
+done
- cd "$dataset"
+shift $((OPTIND-1))
- arguments=${log%.*}
- arguments=${arguments#*/*-*-}
+for log in "$@"
+do
- mkdir -p "$arguments"
+ [[ "$log" =~ build-(.*)/kcf_vot-(.*)-(.*).log ]]
+ tracker_version=${BASH_REMATCH[1]}
+ arguments=${BASH_REMATCH[3]}
+ dataset=${BASH_REMATCH[2]}
- cd "$arguments"
+ data_file=${log%.log}.dat
- data_file="$tracker_version".dat
- touch "$data_file"
+ (echo ${tracker_version}-${arguments}-${dataset}; grep -e '->' $log | grep -o '[0-9.]*ms' ) > $data_file
+done
- echo "${tracker_version^}" >> "$data_file"
+getavg() { grep Average $1 | grep -o '[0-9.]*ms'; }
+set -- $(for i in $@; do avg=$(getavg $i); test "$avg" && echo $i $avg; done \
+ | if (($SORT == 1)); then sort -n -k2; else cat; fi \
+ | cut -f1 -d' ')
- while IFS= read -r line
- do
- #Skip last line
- if [[ $line != *"->"* ]]; then
- continue
- fi
- time=${line%,*,*}
- time=${time//[!.0-9]/}
- echo "$time" >> "$data_file"
- done < "../../../${log}"
- cd ../../
-done
+paste ${@//.log/.dat} > all
-for directory in *
-do
- cd "$directory"
- for subdirectory in *
- do
- cd "$subdirectory"
- paste *.dat > all
- gnuplot -persist << EOFMarker
+gnuplot -persist << EOFMarker
file = 'all'
header = system('head -1 '.file)
N = words(header)
- set title "${directory^}-${subdirectory}"
- set ylabel "Time [ms]"
+ if ($USE_FPS == 1) {
+ set ylabel "FPS"
+ } else {
+ set ylabel "Time [ms]"
+ }
set xtics rotate
set xtics ('' 1)
set for [i=1:N] xtics add (word(header, i) i)
set style data boxplot
set style boxplot nooutliers
+ set grid
unset key
- plot for [i=1:N] file using (i):i
+ if ($USE_FPS == 1) {
+ plot [][0:] for [i=1:N] file using (i):(1000/column(i))
+ } else {
+ plot [][0:] for [i=1:N] file using (i):i
+ }
EOFMarker
- cd ..
- done
- cd ..
-done
-cd ..
-rm -r plot-data
+rm all