test: print benchmarks summary

This commit is contained in:
Jędrzej Boczar 2020-01-30 10:49:52 +01:00
parent e822e6be9f
commit bb4f6106ee
1 changed files with 41 additions and 0 deletions

View File

@ -105,6 +105,45 @@ configurations = [
] ]
class ResultsSummary:
def __init__(self, results):
self.results = results
self.write_bandwidth = self.collect('write_bandwidth')
self.read_bandwidth = self.collect('read_bandwidth')
self.write_efficiency = self.collect('write_efficiency')
self.read_efficiency = self.collect('read_efficiency')
def create_name(self, config):
return '{}:{}:{}:{}'.format(
config.sdram_module, config.sdram_data_width,
config.bist_length, config.bist_random)
def collect(self, attribute):
by_case = {}
for result in self.results:
value = getattr(result, attribute)()
by_case[self.create_name(result.config)] = value
return by_case
def value_string(self, metric, value):
if metric in ['write_bandwidth', 'read_bandwidth']:
return '{:6.3f} {}bps'.format(*human_readable(value))
elif ['write_efficiency', 'read_efficiency']:
return '{:5.1f} %'.format(100 * value)
else:
raise ValueError()
def print(self):
print('\n---====== Summary ======---')
for metric in ['write_bandwidth', 'read_bandwidth', 'write_efficiency', 'read_efficiency']:
print(metric)
for case, value in getattr(self, metric).items():
print(' {:30} {}'.format(case, self.value_string(metric, value)))
def plot(self):
raise NotImplementedError()
def main(): def main():
results = [] results = []
for config in configurations: for config in configurations:
@ -126,6 +165,8 @@ def main():
result.read_efficiency() * 100, result.read_efficiency() * 100,
)) ))
summary = ResultsSummary(results)
summary.print()
if __name__ == "__main__": if __name__ == "__main__":
main() main()