[Python-checkins] benchmarks: Allow for the specification of a base directory for either interpreter
brett.cannon
python-checkins at python.org
Sat Sep 1 00:58:32 CEST 2012
http://hg.python.org/benchmarks/rev/61768f86170c
changeset: 164:61768f86170c
user: Brett Cannon <brett at python.org>
date: Fri Aug 31 18:58:24 2012 -0400
summary:
Allow for the specification of a base directory for either interpreter
being run. This allows for comparing Python 2.x to Python 3.x by
having a Python 2 copy of the benchmarks and Python 3 copy of the
benchmarks and then specifying the proper directory::
benchmarks_py3k$ python3 perf.py --basedir /some/py2/benchmark `which python2.7` `which python3.2`
files:
perf.py | 39 ++++++++++++++++++++++++++++++++-------
1 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/perf.py b/perf.py
--- a/perf.py
+++ b/perf.py
@@ -850,8 +850,14 @@
"-exec", "rm", "-f", "{}", ";"])
-def Relative(path):
- return os.path.join(os.path.dirname(__file__), path)
+def Relative(path, python=None, options=None):
+ basedir = os.path.dirname(__file__)
+ if python is not None:
+ if python[0] == options.base_binary:
+ basedir = options.control_dirname
+ else:
+ basedir = options.experimental_dirname
+ return os.path.join(basedir, path)
def LogCall(command):
@@ -1258,9 +1264,9 @@
def Measure2to3(python, options):
- fast_target = Relative("lib/2to3/lib2to3/refactor.py")
- two_to_three_bin = Relative("lib/2to3/2to3")
- two_to_three_dir = Relative("lib/2to3_data")
+ fast_target = Relative("lib/2to3/lib2to3/refactor.py", python, options)
+ two_to_three_bin = Relative("lib/2to3/2to3", python, options)
+ two_to_three_dir = Relative("lib/2to3_data", python, options)
env = BuildEnv({"PYTHONPATH": two_to_three_dir},
inherit_env=options.inherit_env)
@@ -1471,8 +1477,8 @@
def MeasureMako(python, options):
- bm_path = Relative("performance/bm_mako.py")
- mako_path = Relative("lib/mako")
+ bm_path = Relative("performance/bm_mako.py", python, options)
+ mako_path = Relative("lib/mako", python, options)
bm_env = BuildEnv({"PYTHONPATH": mako_path}, options.inherit_env)
return MeasureGeneric(python, options, bm_path, bm_env, iteration_scaling=5)
@@ -2086,6 +2092,13 @@
"""Parser callback to --inherit_env var names."""
parser.values.inherit_env = [v for v in value.split(",") if v]
+def ParseBasedirOption(python_args_opt):
+ default = os.path.dirname(__file__)
+ parts = python_args_opt.split(",")
+ if len(parts) == 1: # No comma
+ parts.append('')
+ return [path or default for path in parts]
+
def ParseOutputStyle(option, opt_str, value, parser):
if value not in ("normal", "table"):
@@ -2142,6 +2155,15 @@
help=("Comma-separated list of environment variable names"
" that are inherited from the parent environment"
" when running benchmarking subprocesses."))
+ parser.add_option("--basedir", default="",
+ help=("A comma-separated pair of base directories to "
+ "use when calculating absolute file paths to "
+ "benchmark and library code. The first argument "
+ "is for the base interpreter, the second for the "
+ "experimental one. Any unspecified value is "
+ "assumed to be the directory containing this "
+ "file. This is typically used when comparing a "
+ "Python 2.x interpreter to a 3.x one."))
parser.add_option("-T", "--disable_timelines", default=False, action="store_true",
help="Don't use Google charts for displaying timelines.")
parser.add_option("-O", "--output_style", metavar="STYLE", type="string",
@@ -2184,6 +2206,9 @@
base_cmd_prefix = [base] + base_args
changed_cmd_prefix = [changed] + changed_args
+ basedirs = ParseBasedirOption(options.basedir)
+ options.control_dirname, options.experimental_dirname = basedirs
+
logging.basicConfig(level=logging.INFO)
if options.track_memory:
--
Repository URL: http://hg.python.org/benchmarks
More information about the Python-checkins
mailing list