aboutsummaryrefslogtreecommitdiff
path: root/tools/utils_stats.py
diff options
context:
space:
mode:
authorAlexandre Rames <alexandre.rames@linaro.org>2016-02-24 15:04:48 +0000
committerAlexandre Rames <alexandre.rames@linaro.org>2016-02-25 11:21:08 +0000
commita0835a3ed7e820885c4022954d4064e362618d56 (patch)
treeac2842d79e81096f738b87358efef79f68ef8292 /tools/utils_stats.py
parent1d4d08261f7a9a9c2cbc27a705f81fac2fbde734 (diff)
downloadart-testing-a0835a3ed7e820885c4022954d4064e362618d56.tar.gz
Abstract the geomean code a little.
Change-Id: Ib5a35ad9f88bb843c06f968c74c96dd938c97d6e
Diffstat (limited to 'tools/utils_stats.py')
-rw-r--r--tools/utils_stats.py40
1 files changed, 16 insertions, 24 deletions
diff --git a/tools/utils_stats.py b/tools/utils_stats.py
index db57030..86e9596 100644
--- a/tools/utils_stats.py
+++ b/tools/utils_stats.py
@@ -58,54 +58,46 @@ def ComputeStats(nums):
def GetSuiteName(benchmark):
return benchmark.split("/", 2)[1]
-def PrintStats(dict_results):
- headers = [''] + stats_headers
- results = []
-
+def ComputeGeomean(dict_results):
stats_dict = {}
for benchmark in dict_results:
suite_name = GetSuiteName(benchmark)
-
if (suite_name not in stats_dict):
stats_dict[suite_name] = {}
+ stats_dict[suite_name][benchmark] = dict_results[benchmark]
- data = ComputeStats(dict_results[benchmark])
- stats_dict[suite_name][benchmark] = data
-
- results.append([benchmark] + list(data))
-
- utils_print.PrintTable(headers, ['.3f'] + stats_formats, results)
-
- # overall and per suite geomeans calculations
- print("\nGEOMEANS:")
+ # Overall and per suite geomean calculations.
mean_list = []
stdev_list = []
- headers = ['suite', 'geomean', 'error', 'error (% of geomean)']
results = []
for suite_name in stats_dict:
suite_mean_list = []
suite_stdev_list = []
- for benchmark in stats_dict[suite_name]:
- bench_mean = stats_dict[suite_name][benchmark][2]
- bench_stdev = stats_dict[suite_name][benchmark][3]
- suite_mean_list.append(bench_mean)
- suite_stdev_list.append(bench_stdev)
-
- mean_list.append(bench_mean)
- stdev_list.append(bench_stdev)
+ for benchmark in stats_dict[suite_name]:
+ m, M, mean, stdev, dp = ComputeStats(stats_dict[suite_name][benchmark])
+ suite_mean_list.append(mean)
+ suite_stdev_list.append(stdev)
+ mean_list.append(mean)
+ stdev_list.append(stdev)
suite_geomean = CalcGeomean(suite_mean_list)
suite_geomean_err = CalcGeomeanError(suite_mean_list, suite_stdev_list, suite_geomean)
results.append([suite_name, suite_geomean, suite_geomean_err,
- suite_geomean_err / suite_geomean * 100])
+ suite_geomean_err / suite_geomean * 100])
geomean = CalcGeomean(mean_list)
geomean_err = CalcGeomeanError(mean_list, stdev_list, geomean)
results.append(['OVERALL', geomean, geomean_err, geomean_err / geomean * 100])
+ return results
+
+def ComputeAndPrintGeomean(dict_results):
+ results = ComputeGeomean(dict_results)
+ print("GEOMEANS:")
+ headers = ['suite', 'geomean', 'error', 'error (% of geomean)']
utils_print.PrintTable(headers, ['.3f'] * len(headers), results)
# Print a table showing the difference between two runs of benchmarks.