def _display_common_metadata(metadatas, lines): if len(metadatas) < 2: return for metadata in metadatas: # don't display name as metadata, it's already displayed metadata.pop('name', None) common_metadata = _common_metadata(metadatas) if common_metadata: format_title('Common metadata', lines=lines) empty_line(lines) format_metadata(common_metadata, lines=lines) for key in common_metadata: for metadata in metadatas: metadata.pop(key, None)
def display_benchmarks(args, show_metadata=False, hist=False, stats=False, dump=False, result=False, checks=False, display_runs_args=None, only_checks=False): data = load_benchmarks(args) output = [] if show_metadata: metadatas = [item.benchmark.get_metadata() for item in data] _display_common_metadata(metadatas, lines=output) if hist or stats or dump or show_metadata or (not result): use_title = True else: use_title = False if checks: for index, item in enumerate(data): warnings = format_checks(item.benchmark) if warnings: use_title = True break if use_title: show_filename = (data.get_nsuite() > 1) show_name = not data.has_same_unique_benchmark() if not show_filename and stats: show_filename = (len(data) > 1) suite = None for index, item in enumerate(data): lines = [] if show_metadata: metadata = metadatas[index] if metadata: empty_line(lines) lines.append("Metadata:") format_metadata(metadata, lines=lines) bench_lines = format_benchmark(item.benchmark, hist=hist, stats=stats, dump=dump, checks=checks, result=result, display_runs_args=display_runs_args) if bench_lines: empty_line(lines) lines.extend(bench_lines) if lines: bench_lines = lines lines = [] if show_filename and item.suite is not suite: suite = item.suite format_title(item.filename, 1, lines=lines) if stats and len(suite) > 1: empty_line(lines) duration = suite.get_total_duration() lines.append("Number of benchmarks: %s" % len(suite)) lines.append("Total duration: %s" % format_seconds(duration)) dates = suite.get_dates() if dates: start, end = dates lines.append( "Start date: %s" % format_datetime(start, microsecond=False)) lines.append( "End date: %s" % format_datetime(end, microsecond=False)) if show_name: format_title(item.name, 2, lines=lines) empty_line(lines) lines.extend(bench_lines) if lines: empty_line(output) output.extend(lines) for line in output: print(line) if not output and only_checks: if len(data) == 1: print("The benchmark seems to be stable") else: print("All benchmarks seem to be stable") else: for line in output: print(line) show_filename = (data.get_nsuite() > 1) suite = None for item in data: if show_filename and item.suite is not suite: if suite is not None: print() suite = item.suite display_title(item.filename, 1) line = format_result(item.benchmark) if item.title: line = '%s: %s' % (item.name, line) print(line)