Use median instead of avg in harness

Reviewers: mferencevic

Reviewed By: mferencevic

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D725
This commit is contained in:
Mislav Bradac 2017-08-30 13:12:46 +02:00
parent fe6d64066b
commit e68f7ea536

View File

@ -13,6 +13,7 @@ from collections import OrderedDict
from collections import defaultdict
import tempfile
import shutil
from statistics import median
try:
import jail
@ -200,7 +201,7 @@ class _QuerySuite:
measurements = []
measurement_sums = defaultdict(float)
measurement_lists = defaultdict(list)
def add_measurement(dictionary, iteration, key):
if key in dictionary:
@ -211,7 +212,7 @@ class _QuerySuite:
"iteration": iteration}
measurements.append(measurement)
try:
measurement_sums[key] += float(dictionary[key])
measurement_lists[key].append(float(dictionary[key]))
except:
pass
@ -255,19 +256,20 @@ class _QuerySuite:
execute("teardown")
runner.stop()
self.append_scenario_summary(group_name, scenario_name,
measurement_sums, num_iterations)
measurement_lists, num_iterations)
return measurements
def append_scenario_summary(self, group_name, scenario_name,
measurement_sums, num_iterations):
measurement_lists, num_iterations):
self.summary += self.FORMAT[0].format(group_name)
self.summary += self.FORMAT[1].format(scenario_name)
for i, key in enumerate(("query_parsing_time", "query_planning_time",
"query_plan_execution_time", WALL_TIME, CPU_TIME)):
if key not in measurement_sums:
if key not in measurement_lists:
time = "-"
else:
time = "{:.10f}".format(measurement_sums[key] / num_iterations)
# Median is used instead of avg to avoid effect of outliers.
time = "{:.10f}".format(median(measurement_lists[key]))
self.summary += self.FORMAT[i + 2].format(time)
self.summary += "\n"