예제 #1
0
def html_sample(save=True, path=None, doc=None):
    _dir = os.path.join(os.path.dirname(__file__), "data")
    if doc is None:
        doc = np.random.choice(glob.glob(_dir+"/*.html"))
    data = StringIO(open(
        os.path.join(_dir, doc)).read())

    max_batch = 70
    n_batches = 70
    n_samples = 80

    # max_batch = 20
    # n_batches = 20
    # n_samples = 20

    run_params = OrderedDict(max_batch=max_batch, n_batches=n_batches,
                             n_samples=n_samples)

    case = bp.bench("html with_gc", html_parse, data, run_params=run_params)
    path = path if path is not None else \
        get_path("html_parse_"+os.path.splitext(os.path.basename(doc))[0],
                 "", case=case)
    run_sample_case(case, save=save, path=path, path_suffix="gc")

    run_params["with_gc"] = False
    case = bp.bench("html without_gc", html_parse, data, run_params=run_params)
    run_sample_case(case, save=save, path=path)
예제 #2
0
def sample(f, *params, name=None,
           max_batch=100, n_batches=40, n_samples=100,
           save=True, path=None):
    if name is None:
        name = f.__name__ + str(params)
    if save:
        if path is None:
            path = get_path(f.__name__, params, max_batch, n_batches, n_samples)

    run_params = dict(n_samples=n_samples,
                      max_batch=max_batch,
                      n_batches=n_batches)

    case = bp.bench(name + "with gc", f, *params, run_params=run_params)
    run_sample_case(case, save=save, path=path, path_suffix="gc")

    run_params["with_gc"] = False
    case = bp.bench(name + "without gc", f, *params, run_params=run_params)
    run_sample_case(case, save=save, path=path)
예제 #3
0
# -*- coding: utf-8 -*-

import math

import benchpy as bp


def factorial_slow(n):
    assert n >= 0
    return 1 if n == 0 else n * factorial_slow(n - 1)


def pow_slow(x, n):
    assert n >= 0
    return 1 if n == 0 else x * pow_slow(x, n - 1)


if __name__ == "__main__":
    n = 100
    groups = [
        bp.group("factorial(100)", [bp.bench("math_!", math.factorial, n), bp.bench("slow_!", factorial_slow, n)]),
        bp.group("pow(100, 100)", [bp.bench("math^", math.pow, n, n), bp.bench("simple^", pow_slow, n, n)]),
    ]

    print(bp.run(groups))
예제 #4
0
# -*- coding: utf-8 -*-

import benchpy as bp


def cyclic_list(n):
    for i in range(n):
        cycle = []
        cycle.append(cycle)


if __name__ == "__main__":
    n_cycles = 128
    name = "cycle_list({})".format(n_cycles)
    groups = [
        bp.group("+GC", [bp.bench(name, cyclic_list, n_cycles)], with_gc=True),
        bp.group("-GC", [bp.bench(name, cyclic_list, n_cycles)], with_gc=False)
    ]
    res = bp.run(groups, n_samples=16, max_batch=32, n_batches=10, n_jobs=-1)
    print(res)
    res.save_info(path="res")
예제 #5
0
# -*- coding: utf-8 -*-

import benchpy as bp


def noop():
    pass


if __name__ == "__main__":
    print(bp.run(bp.bench("noop", noop),
                 n_samples=4, max_batch=32, n_batches=4))
예제 #6
0
def bench_f(f_, *args, run_params_=None, **kwargs):
    if run_params_ is None:
        run_params_ = {}
    bp.bench("f", f_, *args, run_params=run_params_, **kwargs).run()
예제 #7
0
import benchpy as bp
from benchpy.run import noop


def bench_f(f_, *args, run_params_=None, **kwargs):
    if run_params_ is None:
        run_params_ = {}
    bp.bench("f", f_, *args, run_params=run_params_, **kwargs).run()


if __name__ == "__main__":
    run_params = dict(max_batch=10, n_batches=2, n_samples=2)
    f = noop
    run_params_ = dict(run_params)
    run_params_["n_jobs"] = -1
    res = bp.group("benchmark_time",
                   [bp.bench("f", f, run_params=run_params),
                    bp.bench("bench(f)", bench_f, noop, run_params=run_params,
                             run_params_=run_params_)]).run()
    print(res)
    print(res.results[1])