Files @ 329ff9ed7905
Branch filter:

Location: Shamira/src/benchmark.py - annotation

Laman
added benchmark script
from argparse import ArgumentParser
import cProfile
import timeit

from shamira import generate, reconstruct
from tests.test_shamira import TestShamira


def measure(args):
	secret = "1234567890123456"
	shares = generate(secret, args.k, args.n)
	symbols = globals()
	symbols.update(locals())

	time = timeit.timeit("""generate(secret, args.k, args.n)""", number=1, globals=symbols)
	print("The generation took {0:.3}s, {1:.3} per byte.".format(time, time/16))

	time = timeit.timeit("""reconstruct(*shares)""", number=1, globals=symbols)
	print("The reconstruction took {0:.3}s, {1:.3} per byte.".format(time, time/16))


def profile(args):
	t = TestShamira()

	cProfile.runctx(r"""t.test_generate_reconstruct()""", globals=globals(), locals=locals())


parser = ArgumentParser()
parser.set_defaults(func=lambda _: parser.error("missing command"))
subparsers = parser.add_subparsers()

profile_parser = subparsers.add_parser("profile")
profile_parser.set_defaults(func=profile)

measure_parser = subparsers.add_parser("measure")
measure_parser.add_argument("-k", type=int, required=True)
measure_parser.add_argument("-n", type=int, required=True)
measure_parser.set_defaults(func=measure)

args = parser.parse_args()
args.func(args)