From c6d96aca9ff83c05a22ab9d23969b9e9da863964 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 12 Mar 2021 08:00:20 +0200 Subject: refactor(benchmark-cmd): reformat, drop unused variable --- benchmark-cmd | 131 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 69 insertions(+), 62 deletions(-) diff --git a/benchmark-cmd b/benchmark-cmd index ad5da31..da6b1fa 100755 --- a/benchmark-cmd +++ b/benchmark-cmd @@ -7,10 +7,10 @@ import tempfile class Table(object): - '''Represent tabular data for formatting purposes.''' - - sep = ' ' - + """Represent tabular data for formatting purposes.""" + + sep = " " + def __init__(self): self.caption = None self.columns = [] @@ -25,21 +25,25 @@ class Table(object): def write_plaintext(self, f): if self.caption: - f.write('%s\n%s\n\n' % (self.caption, '-' * len(self.caption))) - + f.write("%s\n%s\n\n" % (self.caption, "-" * len(self.caption))) + cells = [] cells.append([h1 for h1, h2, format, left in self.columns]) cells.append([h2 for h1, h2, format, left in self.columns]) for row in self.rows: - cells.append([self.format_cell(row[i], self.columns[i][2]) - for i in range(len(self.columns))]) + cells.append( + [ + self.format_cell(row[i], self.columns[i][2]) + for i in range(len(self.columns)) + ] + ) widths = self.compute_column_widths(cells) - - f.write('%s\n' % self.format_headings(widths, 0)) - f.write('%s\n' % self.format_headings(widths, 1)) + + f.write("%s\n" % self.format_headings(widths, 0)) + f.write("%s\n" % self.format_headings(widths, 1)) for row in self.rows: - f.write('%s\n' % self.format_row(row, widths)) + f.write("%s\n" % self.format_row(row, widths)) def format_cell(self, data, format): return format % data @@ -52,112 +56,115 @@ class Table(object): return widths def format_headings(self, widths, which): - headings = [self.pad(widths[i], - self.columns[i][which], - self.columns[i][3]) - for i in range(len(widths))] + headings = [ + self.pad(widths[i], self.columns[i][which], self.columns[i][3]) + for i in range(len(widths)) + ] return self.sep.join(headings) - + def format_row(self, row, widths): def cell(i): h1, h2, format, left = self.columns[i] return self.pad(widths[i], format % row[i], left) + cells = [cell(i) for i in range(len(widths))] return self.sep.join(cells) def pad(self, width, text, left): if left: - return '%-*s' % (width, text) + return "%-*s" % (width, text) else: - return '%*s' % (width, text) + return "%*s" % (width, text) class Benchmarker(cliapp.Application): - def add_settings(self): - self.settings.string_list(['command'], 'command to benchmark') - self.settings.string_list(['verify'], 'command for verifying result') - self.settings.string_list(['setup'], 'command for setup') - self.settings.string_list(['cleanup'], 'command for cleanup') - self.settings.boolean(['setup-once'], 'do setups only once') - self.settings.boolean(['cleanup-once'], 'do cleanups only once') - self.settings.boolean(['verbose'], 'show commands and their output') - + self.settings.string_list(["command"], "command to benchmark") + self.settings.string_list(["verify"], "command for verifying result") + self.settings.string_list(["setup"], "command for setup") + self.settings.string_list(["cleanup"], "command for cleanup") + self.settings.boolean(["setup-once"], "do setups only once") + self.settings.boolean(["cleanup-once"], "do cleanups only once") + self.settings.boolean(["verbose"], "show commands and their output") + def process_args(self, args): results = Table() - results.add_column('user', '(s)', '%.1f') - results.add_column('system', '(s)', '%.1f') - results.add_column('real', '(s)', '%.1f') - results.add_column('max RSS', '(KiB)', '%d') - results.add_column('cmd', '', '%-0s', left=True) - - commands = self.settings['command'] - if commands and self.settings['setup-once']: + results.add_column("user", "(s)", "%.1f") + results.add_column("system", "(s)", "%.1f") + results.add_column("real", "(s)", "%.1f") + results.add_column("max RSS", "(KiB)", "%d") + results.add_column("cmd", "", "%-0s", left=True) + + commands = self.settings["command"] + if commands and self.settings["setup-once"]: self.setup() for cmd in commands: - if not self.settings['setup-once']: + if not self.settings["setup-once"]: self.setup() numbers = self.measure_cmd(cmd) self.verify() results.add_row(numbers + (cmd,)) - if not self.settings['cleanup-once']: + if not self.settings["cleanup-once"]: self.cleanup() - if self.settings['verbose']: - self.output.write('\n') - if commands and self.settings['cleanup-once']: + if self.settings["verbose"]: + self.output.write("\n") + if commands and self.settings["cleanup-once"]: self.cleanup() results.write_plaintext(self.output) def setup(self): - self.run_shell(self.settings['setup']) + self.run_shell(self.settings["setup"]) def cleanup(self): - self.run_shell(self.settings['cleanup']) + self.run_shell(self.settings["cleanup"]) def verify(self): - self.run_shell(self.settings['verify']) + self.run_shell(self.settings["verify"]) def run_shell(self, cmds): for cmd in cmds: - if self.settings['verbose']: - self.output.write('COMMAND: %s\n' % cmd) - out = self.runcmd(['sh', '-c', cmd]) - if self.settings['verbose']: + if self.settings["verbose"]: + self.output.write("COMMAND: %s\n" % cmd) + out = self.runcmd(["sh", "-c", cmd]) + if self.settings["verbose"]: self.output.write(out) def measure_cmd(self, cmd): fd, timings = tempfile.mkstemp() - time_argv = ['/usr/bin/time', - '-o', timings, - '--format', '%U\n%S\n%e\n%M\n%e', - '--', - 'sh', - '-c', cmd] - - if self.settings['verbose']: - self.output.write('MEASURE: %s\n' % cmd) + time_argv = [ + "/usr/bin/time", + "-o", + timings, + "--format", + "%U\n%S\n%e\n%M\n%e", + "--", + "sh", + "-c", + cmd, + ] + + if self.settings["verbose"]: + self.output.write("MEASURE: %s\n" % cmd) out = self.runcmd(time_argv) - if self.settings['verbose']: + if self.settings["verbose"]: self.output.write(out) data = [] while True: - datum = os.read(fd, 1024**2) + datum = os.read(fd, 1024 ** 2) if not datum: break data.append(datum) os.close(fd) - data = ''.join(data) + data = "".join(data) fields = [float(x) for x in data.splitlines()] user = fields[0] system = fields[1] real = fields[2] maxrss = fields[3] - elapsed = fields[4] return user, system, real, maxrss Benchmarker().run() - -- cgit v1.2.1