diff options
| author | J08nY | 2024-07-16 16:33:26 +0200 |
|---|---|---|
| committer | J08nY | 2024-07-16 16:33:26 +0200 |
| commit | eea57d6019d7b13a3c9e01cf1ecb11b132e5e291 (patch) | |
| tree | a89f8e3f5ff6aee78e8bfb7c3617b382c8f9bdf8 /test | |
| parent | d6fc0ada881aad78543124bd2ffb63ce187b4e0f (diff) | |
| download | pyecsca-eea57d6019d7b13a3c9e01cf1ecb11b132e5e291.tar.gz pyecsca-eea57d6019d7b13a3c9e01cf1ecb11b132e5e291.tar.zst pyecsca-eea57d6019d7b13a3c9e01cf1ecb11b132e5e291.zip | |
Diffstat (limited to 'test')
| -rwxr-xr-x | test/ec/perf_formula.py | 24 | ||||
| -rwxr-xr-x | test/ec/perf_mod.py | 48 | ||||
| -rwxr-xr-x | test/ec/perf_mult.py | 4 | ||||
| -rw-r--r-- | test/sca/perf_combine.py | 8 | ||||
| -rw-r--r-- | test/sca/perf_zvp.py | 9 | ||||
| -rw-r--r-- | test/utils.py | 4 |
6 files changed, 77 insertions, 20 deletions
diff --git a/test/ec/perf_formula.py b/test/ec/perf_formula.py index 782631c..1092ab5 100755 --- a/test/ec/perf_formula.py +++ b/test/ec/perf_formula.py @@ -9,12 +9,19 @@ from test.utils import Profiler @click.command() -@click.option("-p", "--profiler", type=click.Choice(("py", "c", "raw")), default="py") +@click.option( + "-p", + "--profiler", + type=click.Choice(("py", "c", "raw")), + default="py", + envvar="PROF", +) @click.option( "-m", "--mod", type=click.Choice(("python", "gmp", "flint")), default="flint" if has_flint else "gmp" if has_gmp else "python", + envvar="MOD", ) @click.option("-o", "--operations", type=click.INT, default=5000) @click.option( @@ -36,7 +43,10 @@ def main(profiler, mod, operations, directory): ) one_point = p256.generator with Profiler( - profiler, directory, f"formula_dbl2016rcb_p256_{operations}_{mod}" + profiler, + directory, + f"formula_dbl2016rcb_p256_{operations}_{mod}", + operations, ): for _ in range(operations): one_point = dbl(p256.curve.prime, one_point, **p256.curve.parameters)[0] @@ -45,7 +55,10 @@ def main(profiler, mod, operations, directory): ) other_point = p256.generator with Profiler( - profiler, directory, f"formula_add2016rcb_p256_{operations}_{mod}" + profiler, + directory, + f"formula_add2016rcb_p256_{operations}_{mod}", + operations, ): for _ in range(operations): one_point = add( @@ -59,7 +72,10 @@ def main(profiler, mod, operations, directory): ) eone_point = ed25519.generator with Profiler( - profiler, directory, f"formula_mdbl2008hwcd_ed25519_{operations}_{mod}" + profiler, + directory, + f"formula_mdbl2008hwcd_ed25519_{operations}_{mod}", + operations, ): for _ in range(operations): dblg(ed25519.curve.prime, eone_point, **ed25519.curve.parameters) diff --git a/test/ec/perf_mod.py b/test/ec/perf_mod.py index a0d6577..7783f09 100755 --- a/test/ec/perf_mod.py +++ b/test/ec/perf_mod.py @@ -9,12 +9,19 @@ from test.utils import Profiler @click.command() -@click.option("-p", "--profiler", type=click.Choice(("py", "c", "raw")), default="py") +@click.option( + "-p", + "--profiler", + type=click.Choice(("py", "c", "raw")), + default="py", + envvar="PROF", +) @click.option( "-m", "--mod", type=click.Choice(("python", "gmp", "flint")), default="flint" if has_flint else "gmp" if has_gmp else "python", + envvar="MOD", ) @click.option("-o", "--operations", type=click.INT, default=100000) @click.option( @@ -31,18 +38,24 @@ def main(profiler, mod, operations, directory): a = make_mod(0x11111111111111111111111111111111, n) b = make_mod(0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB, n) click.echo(f"Profiling {operations} {n.bit_length()}-bit modular inverse...") - with Profiler(profiler, directory, f"mod_256b_inverse_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_inverse_{operations}_{mod}", operations + ): for _ in range(operations): a.inverse() click.echo( f"Profiling {operations} {n.bit_length()}-bit modular square root..." ) - with Profiler(profiler, directory, f"mod_256b_sqrt_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_sqrt_{operations}_{mod}", operations + ): for _ in range(operations): a.sqrt() click.echo(f"Profiling {operations} {n.bit_length()}-bit modular multiply...") c = a - with Profiler(profiler, directory, f"mod_256b_multiply_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_multiply_{operations}_{mod}", operations + ): for _ in range(operations): c = c * b click.echo( @@ -50,33 +63,46 @@ def main(profiler, mod, operations, directory): ) c = a with Profiler( - profiler, directory, f"mod_256b_constmultiply_{operations}_{mod}" + profiler, + directory, + f"mod_256b_constmultiply_{operations}_{mod}", + operations, ): for _ in range(operations): c = c * 48006 click.echo(f"Profiling {operations} {n.bit_length()}-bit modular square...") c = a - with Profiler(profiler, directory, f"mod_256b_square_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_square_{operations}_{mod}", operations + ): for _ in range(operations): - c = c ** 2 + c = c**2 click.echo(f"Profiling {operations} {n.bit_length()}-bit modular add...") c = a - with Profiler(profiler, directory, f"mod_256b_add_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_add_{operations}_{mod}", operations + ): for _ in range(operations): c = c + b click.echo(f"Profiling {operations} {n.bit_length()}-bit modular subtract...") c = a - with Profiler(profiler, directory, f"mod_256b_subtract_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_subtract_{operations}_{mod}", operations + ): for _ in range(operations): c = c - b click.echo( f"Profiling {operations} {n.bit_length()}-bit modular quadratic residue checks..." ) - with Profiler(profiler, directory, f"mod_256b_isresidue_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_isresidue_{operations}_{mod}", operations + ): for _ in range(operations): a.is_residue() click.echo(f"Profiling {operations} {n.bit_length()}-bit modular random...") - with Profiler(profiler, directory, f"mod_256b_random_{operations}_{mod}"): + with Profiler( + profiler, directory, f"mod_256b_random_{operations}_{mod}", operations + ): for _ in range(operations): Mod.random(n) diff --git a/test/ec/perf_mult.py b/test/ec/perf_mult.py index 82d2976..402aa26 100755 --- a/test/ec/perf_mult.py +++ b/test/ec/perf_mult.py @@ -41,7 +41,7 @@ def main(profiler, mod, operations, directory): f"Profiling {operations} {p256.curve.prime.bit_length()}-bit scalar multiplication executions..." ) one_point = p256.generator - with Profiler(profiler, directory, f"mult_ltr_rcb_p256_{operations}_{mod}"): + with Profiler(profiler, directory, f"mult_ltr_rcb_p256_{operations}_{mod}", operations): for _ in range(operations): mult.init(p256, one_point) one_point = mult.multiply( @@ -52,7 +52,7 @@ def main(profiler, mod, operations, directory): ) with local(DefaultContext()): one_point = p256.generator - with Profiler(profiler, directory, f"mult_ltr_rcb_p256_wtrace_{operations}_{mod}"): + with Profiler(profiler, directory, f"mult_ltr_rcb_p256_wtrace_{operations}_{mod}", operations): for _ in range(operations): mult.init(p256, one_point) one_point = mult.multiply( diff --git a/test/sca/perf_combine.py b/test/sca/perf_combine.py index bd5db59..8ac274c 100644 --- a/test/sca/perf_combine.py +++ b/test/sca/perf_combine.py @@ -16,7 +16,13 @@ from pyecsca.sca import ( @click.command() -@click.option("-p", "--profiler", type=click.Choice(("py", "c", "raw")), default="py") +@click.option( + "-p", + "--profiler", + type=click.Choice(("py", "c", "raw")), + default="py", + envvar="PROF", +) @click.option("-o", "--operations", type=click.INT, default=100) @click.option( "-d", diff --git a/test/sca/perf_zvp.py b/test/sca/perf_zvp.py index 7a04dd6..34090df 100644 --- a/test/sca/perf_zvp.py +++ b/test/sca/perf_zvp.py @@ -11,12 +11,19 @@ from test.utils import Profiler @click.command() -@click.option("-p", "--profiler", type=click.Choice(("py", "c", "raw")), default="py") +@click.option( + "-p", + "--profiler", + type=click.Choice(("py", "c", "raw")), + default="py", + envvar="PROF", +) @click.option( "-m", "--mod", type=click.Choice(("python", "gmp", "flint")), default="flint" if has_flint else "gmp" if has_gmp else "python", + envvar="MOD", ) @click.option("-o", "--operations", type=click.INT, default=1) @click.option( diff --git a/test/utils.py b/test/utils.py index 5d1e80f..1276ad6 100644 --- a/test/utils.py +++ b/test/utils.py @@ -29,6 +29,7 @@ class Profiler: prof_type: Union[Literal["py"], Literal["c"], Literal["raw"]], output_directory: str, benchmark_name: str, + operations: int = 0 ): self._prof: Union[PyProfiler, cProfiler, RawTimer] = { "py": PyProfiler, @@ -40,6 +41,7 @@ class Profiler: self._state = "out" self._output_directory = output_directory self._benchmark_name = benchmark_name + self._operations = operations def __enter__(self): self._prof.__enter__() @@ -90,7 +92,7 @@ class Profiler: elif self._prof_type == "c": self._prof.print_stats("cumtime") # type: ignore elif self._prof_type == "raw": - print(f"{self._prof.duration:.4} s") # type: ignore + print(f"{self._prof.duration:.4f}s {(self._operations/self._prof.duration) if self._operations else '-':.1f}op/s") # type: ignore def get_time(self) -> float: if self._state != "out": |
