From 5abb0a952b1ab72f2de0c1a6acc54f8fae39d8e4 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Wed, 7 Sep 2016 18:06:25 +0200 Subject: [PATCH] Add a script that makes performance comparisons with pandas --- bin/CMakeLists.txt | 4 ++- bin/performance_regression.py | 55 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 bin/performance_regression.py diff --git a/bin/CMakeLists.txt b/bin/CMakeLists.txt index 847e8935..c1aaf2f5 100644 --- a/bin/CMakeLists.txt +++ b/bin/CMakeLists.txt @@ -1 +1,3 @@ -dune_symlink_to_source_files(FILES make_graph.sh) +dune_symlink_to_source_files(FILES make_graph.sh + performance_regression.py + ) diff --git a/bin/performance_regression.py b/bin/performance_regression.py new file mode 100755 index 00000000..7ef368a4 --- /dev/null +++ b/bin/performance_regression.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +import pandas +import subprocess +import sys + +class color: + GREEN = '\033[92m' + RED = '\033[91m' + ENDC = '\033[0m' + + +def parse_data(): + frame = pandas.read_csv('timings.csv', header=None, names=('exec', 'kernel', 'time'), delimiter=' ') + data = frame.groupby(('exec', 'kernel'))['time'].min() + + return data + + +def run(): + subprocess.call("make -j2 build_tests".split()) + subprocess.call("rm timings.csv".split()) + for i in range(10): + subprocess.call("ctest".split()) + + +def regression_summary(): + # Get timings + run() + data1 = parse_data() + + # Switch to reference data + subprocess.call(sys.argv[1:]) + + # Get reference timings + run() + data2 = parse_data() + + for key in data1.keys(): + exe, kernel = key + diff = data1[exe][kernel] - data2[exe][kernel] + rel = abs(diff / data2[exe][kernel]) + s = exe + '/' + kernel + ': ' + str(rel) + c = '' + if rel > 0.02: + if diff > 0.: + c = color.RED + else: + c = color.GREEN + + print(c + s + color.ENDC) + + +if __name__ == '__main__': + regression_summary() -- GitLab