Commit 7b9bcb84 authored by Brett Cannon's avatar Brett Cannon

Touch up comments and code along with outputting what the unit of measure is.

parent 0736767f
"""Benchmark some basic import use-cases.""" """Benchmark some basic import use-cases."""
# XXX # XXX
# - Bench from source (turn off bytecode generation) # - from source
# - Bench from bytecode (remove existence of source) # + sys.dont_write_bytecode = True
# - Bench bytecode generation # + sys.dont_write_bytecode = False
# - Bench extensions # - from bytecode
# - extensions
from . import util from . import util
from .source import util as source_util from .source import util as source_util
import imp import imp
...@@ -30,7 +31,7 @@ def bench(name, cleanup=lambda: None, *, seconds=1, repeat=3): ...@@ -30,7 +31,7 @@ def bench(name, cleanup=lambda: None, *, seconds=1, repeat=3):
# One execution too far # One execution too far
if total_time > seconds: if total_time > seconds:
count -= 1 count -= 1
yield count yield count // seconds
def from_cache(repeat): def from_cache(repeat):
"""sys.modules""" """sys.modules"""
...@@ -49,13 +50,15 @@ def builtin_mod(repeat): ...@@ -49,13 +50,15 @@ def builtin_mod(repeat):
name = 'errno' name = 'errno'
if name in sys.modules: if name in sys.modules:
del sys.modules[name] del sys.modules[name]
# Relying on built-in importer being implicit.
for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat): for result in bench(name, lambda: sys.modules.pop(name), repeat=repeat):
yield result yield result
def main(import_, repeat=3): def main(import_, *, repeat=3):
__builtins__.__import__ = import_ __builtins__.__import__ = import_
benchmarks = from_cache, builtin_mod benchmarks = from_cache, builtin_mod
print("Measuring imports/second\n")
for benchmark in benchmarks: for benchmark in benchmarks:
print(benchmark.__doc__, "[", end=' ') print(benchmark.__doc__, "[", end=' ')
sys.stdout.flush() sys.stdout.flush()
...@@ -75,7 +78,7 @@ if __name__ == '__main__': ...@@ -75,7 +78,7 @@ if __name__ == '__main__':
default=False, help="use the built-in __import__") default=False, help="use the built-in __import__")
options, args = parser.parse_args() options, args = parser.parse_args()
if args: if args:
raise RuntimeError("unrecognized args: {0}".format(args)) raise RuntimeError("unrecognized args: {}".format(args))
import_ = __import__ import_ = __import__
if not options.builtin: if not options.builtin:
import_ = importlib.__import__ import_ = importlib.__import__
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment