def main(hostpython): with conftest.spawn_web_server() as (hostname, port, log_path): results = {} for k, v in get_benchmarks(): print(k) results[k] = run_all(hostpython, port, v) return results
def main(hostpython): with conftest.spawn_web_server() as (hostname, port, log_path): results = {} selenium_backends = {} b = {"native": float("NaN")} browser_cls = [ ("firefox", conftest.FirefoxWrapper), ("chrome", conftest.ChromeWrapper), ] for name, cls in browser_cls: t0 = time() selenium_backends[name] = cls(port) b[name] = time() - t0 # pre-load numpy for the selenium instance used in benchmarks selenium_backends[name].load_package("numpy") results["selenium init"] = b print_entry("selenium init", b) # load packages for package_name in ["numpy"]: b = {"native": float("NaN")} for browser_name, cls in browser_cls: selenium = cls(port) try: t0 = time() selenium.load_package(package_name) b[browser_name] = time() - t0 finally: selenium.driver.quit() results["load " + package_name] = b print_entry("load " + package_name, b) for name, content in get_benchmarks(): results[name] = run_all(hostpython, selenium_backends, content) print_entry(name, results[name]) for selenium in selenium_backends.values(): selenium.driver.quit() return results
def main(): BENCHMARKS = { "pystone": get_pystone_benchmarks, "numpy": get_numpy_benchmarks, "matplotlib": get_matplotlib_benchmarks, } args = parse_args(list(BENCHMARKS.keys())) targets = [t.lower() for t in args.target] output = Path(args.output).resolve() timeout = args.timeout results = {} selenium_backends = {} browser_cls = [ ("firefox", conftest.FirefoxWrapper), ("chrome", conftest.ChromeWrapper), ] with conftest.spawn_web_server() as (hostname, port, log_path): # selenium initialization time result = {"native": float("NaN")} for browser_name, cls in browser_cls: try: t0 = time() selenium = cls(port, script_timeout=timeout) result[browser_name] = time() - t0 finally: selenium.driver.quit() results["selenium init"] = result print_entry("selenium init", result) # package loading time for package_name in ["numpy"]: result = {"native": float("NaN")} for browser_name, cls in browser_cls: selenium = cls(port, script_timeout=timeout) try: t0 = time() selenium.load_package(package_name) result[browser_name] = time() - t0 finally: selenium.driver.quit() results[f"load {package_name}"] = result print_entry(f"load {package_name}", result) # run benchmarks for benchmark_name, content in get_benchmarks(BENCHMARKS, targets): try: # instantiate browsers for each benchmark to prevent side effects for browser_name, cls in browser_cls: selenium_backends[browser_name] = cls(port, script_timeout=timeout) # pre-load numpy and matplotlib for the selenium instance used in benchmarks selenium_backends[browser_name].load_package( ["numpy", "matplotlib"] ) results[benchmark_name] = run_all(selenium_backends, content) print_entry(benchmark_name, results[benchmark_name]) finally: for selenium in selenium_backends.values(): selenium.driver.quit() output.parent.mkdir(exist_ok=True, parents=True) output.write_text(json.dumps(results))