Skip to content
This repository has been archived by the owner on Apr 3, 2020. It is now read-only.

Commit

Permalink
Revert of [tools] add --pretty switch to run_perf.py (patchset #7 id:…
Browse files Browse the repository at this point in the history
…120001 of https://codereview.chromium.org/1681283004/ )

Reason for revert:
[Sheriff] Breaks android runs. Will look later why.

Original issue's description:
> [tools] add --pretty switch to run_perf.py
>
> This CL improves running our internal benchmarks locally by adding the
> --pretty option to tools/run_perf.py. With the flag enabled we print
> the run-time of each benchmark directly and avoid the json output at
> the end.
>
> NOTRY=true
>
> Committed: https://crrev.com/83f69507ab1b9380b56758b747d4f3fabc849e49
> Cr-Commit-Position: refs/heads/master@{#33981}

TBR=cbruni@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1696293002

Cr-Commit-Position: refs/heads/master@{#34017}
  • Loading branch information
mi-ac authored and Commit bot committed Feb 16, 2016
1 parent 84a225d commit 2f8e335
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 113 deletions.
125 changes: 13 additions & 112 deletions tools/run_perf.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,10 +405,7 @@ def __init__(self, suite, parent, arch):
# TODO(machenbach): Currently that makes only sense for the leaf level.
# Multiple place holders for multiple levels are not supported.
if parent.results_regexp:
try:
regexp_default = parent.results_regexp % re.escape(suite["name"])
except TypeError:
regexp_default = parent.results_regexp
regexp_default = parent.results_regexp % re.escape(suite["name"])
else:
regexp_default = None
self.results_regexp = suite.get("results_regexp", regexp_default)
Expand Down Expand Up @@ -590,25 +587,6 @@ def GetPlatform(options):
else:
return DesktopPlatform(options)

def GetPrettyFormatted(self, options):
return self

def PreExecution(self):
pass

def PostExecution(self):
pass

def PreTests(self, node, path):
pass

def PrintResult(self, result):
pass

def _PrintStdout(self, title, output):
print title % "Stdout"
print output.stdout

def _Run(self, runnable, count, no_patch=False):
raise NotImplementedError() # pragma: no cover

Expand All @@ -631,72 +609,15 @@ def Run(self, runnable, count):
return stdout, None


class PlatformFormattedMixin(object):
"""
Helper mixin that adds formatted output used when running benchmarks
with the --pretty flag.
"""

def _PrintStdout(self, title, output):
sys.stdout.write("\r")
if output.exit_code != 0:
print output.stdout
return
# Assume the time is on the last line
result_line = output.stdout.splitlines()[-1].strip()
sys.stdout.write(result_line)
# Fill with spaces up to 80 characters.
sys.stdout.write(' '*max(0, 80-len(result_line)))
sys.stdout.flush()

def _GetMean(self, trace):
results = trace['results']
if len(results) == 0:
return 0
# If the tests provided a stddev the results consists of one single average
# value, so return that instead.
if trace['stddev']:
return results[0]
# For a non-zero length results list calculate the average here.
return sum([float(x) for x in results]) / len(results)

def _GetDeviation(self, trace):
# If the benchmark provided a stddev use that directly.
stddev = trace['stddev']
if stddev:
return stddev
# If no stddev was provided calculate it from the results.
results = trace['results']
if len(results) == 0:
return 0
mean = self._GetMean(trace)
square_deviation = sum((float(x)-mean)**2 for x in results)
return (square_deviation / len(results)) ** 0.5

def PrintResult(self, result):
if result.errors:
print "\r:Errors:"
print "\n".join(set(result.errors))
else:
trace = result.traces[0]
average = self._GetMean(trace)
stdev = self._GetDeviation(trace)
stdev_percentage = 100 * stdev / average if average != 0 else 0
result_string = "\r %s +/- %3.2f%% %s" % (
average, stdev_percentage, trace['units'])
sys.stdout.write(result_string)
# Fill with spaces up to 80 characters.
sys.stdout.write(' '*max(0, 80-len(result_string)))
sys.stdout.write("\n")
sys.stdout.flush()


class DesktopPlatform(Platform):
def __init__(self, options):
super(DesktopPlatform, self).__init__(options)

def GetPrettyFormatted(self, options):
return PrettyFormattedDesktopPlatform(options)
def PreExecution(self):
pass

def PostExecution(self):
pass

def PreTests(self, node, path):
if isinstance(node, RunnableConfig):
Expand All @@ -715,7 +636,8 @@ def _Run(self, runnable, count, no_patch=False):
print title % "OSError"
print e
return ""
self._PrintStdout(title, output)
print title % "Stdout"
print output.stdout
if output.stderr: # pragma: no cover
# Print stderr for debugging.
print title % "Stderr"
Expand All @@ -732,10 +654,6 @@ def _Run(self, runnable, count, no_patch=False):
return output.stdout


class PrettyFormattedDesktopPlatform(PlatformFormattedMixin, DesktopPlatform):
pass


class AndroidPlatform(Platform): # pragma: no cover
DEVICE_DIR = "/data/local/tmp/v8/"

Expand All @@ -753,9 +671,6 @@ def __init__(self, options):
self.adb_wrapper = adb_wrapper.AdbWrapper(options.device)
self.device = device_utils.DeviceUtils(self.adb_wrapper)

def GetPrettyFormatted(self, options):
return PrettyFormattedAndroidPlatform(options)

def PreExecution(self):
perf = perf_control.PerfControl(self.device)
perf.SetHighPerfMode()
Expand Down Expand Up @@ -842,10 +757,6 @@ def PreTests(self, node, path):
for resource in node.resources:
self._PushFile(bench_abs, resource, bench_rel)

def _PrintStdout(self, title, output):
print title % "Stdout"
print "\n".join(output.stdout)

def _Run(self, runnable, count, no_patch=False):
suffix = ' - without patch' if no_patch else ''
target_dir = "bin_no_patch" if no_patch else "bin"
Expand All @@ -869,17 +780,15 @@ def _Run(self, runnable, count, no_patch=False):
timeout=runnable.timeout,
retries=0,
)
self._PrintStdout(title, output)
stdout = "\n".join(output)
print title % "Stdout"
print stdout
except device_errors.CommandTimeoutError:
print ">>> Test timed out after %ss." % runnable.timeout
stdout = ""
return stdout


class PrettyFormattedAndroidPlatform(PlatformFormattedMixin, AndroidPlatform):
pass


# TODO: Implement results_processor.
def Main(args):
logging.getLogger().setLevel(logging.INFO)
Expand Down Expand Up @@ -909,9 +818,6 @@ def Main(args):
default="out")
parser.add_option("--outdir-no-patch",
help="Base directory with compile output without patch")
parser.add_option("--pretty",
help="Print human readable output",
default=False, action="store_true")
parser.add_option("--binary-override-path",
help="JavaScript engine binary. By default, d8 under "
"architecture-specific build dir. "
Expand Down Expand Up @@ -967,8 +873,6 @@ def Main(args):
options.shell_dir_no_patch = None

platform = Platform.GetPlatform(options)
if options.pretty:
platform = platform.GetPrettyFormatted(options)

results = Results()
results_no_patch = Results()
Expand Down Expand Up @@ -1010,22 +914,19 @@ def Runner():
# Let runnable iterate over all runs and handle output.
result, result_no_patch = runnable.Run(
Runner, trybot=options.shell_dir_no_patch)
platform.PrintResult(result)
results += result
results_no_patch += result_no_patch
platform.PostExecution()

if options.json_test_results:
results.WriteToFile(options.json_test_results)
else: # pragma: no cover
if not options.pretty:
print results
print results

if options.json_test_results_no_patch:
results_no_patch.WriteToFile(options.json_test_results_no_patch)
else: # pragma: no cover
if not options.pretty:
print results_no_patch
print results_no_patch

return min(1, len(results.errors))

Expand Down
1 change: 0 additions & 1 deletion tools/unittests/run_perf_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,6 @@ def testAndroid(self):
platform.PreExecution = MagicMock(return_value=None)
platform.PostExecution = MagicMock(return_value=None)
platform.PreTests = MagicMock(return_value=None)
platform.PrintResult = MagicMock(return_value=None)
platform.Run = MagicMock(
return_value=("Richards: 1.234\nDeltaBlue: 10657567\n", None))
run_perf.AndroidPlatform = MagicMock(return_value=platform)
Expand Down

0 comments on commit 2f8e335

Please sign in to comment.