Skip to content

Commit 9fe875c

Browse files
committed
add benchmark tool (just python RSA for now)
1 parent c6c9112 commit 9fe875c

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

scripts/speed.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import timeit
2+
3+
from tlslite.utils.cryptomath import gmpyLoaded
4+
5+
print("Acceleration backends loaded:")
6+
print("gmpy: {0}".format(gmpyLoaded))
7+
print("")
8+
9+
def do(setup_statements, statement):
10+
# extracted from timeit.py
11+
t = timeit.Timer(stmt=statement, setup="\n".join(setup_statements))
12+
# determine number so that 0.2 <= total time < 2.0
13+
for i in range(1, 10):
14+
number = 10 ** i
15+
x = t.timeit(number)
16+
if x >= 0.2:
17+
break
18+
return x / number
19+
20+
21+
prnt_form = (
22+
"{name:>16}{sep:1} {keygen:>9{form}}{unit:1} "
23+
"{keygen_inv:>9{form_inv}} {sign:>9{form}}{unit:1} "
24+
"{sign_inv:>9{form_inv}} {verify:>9{form}}{unit:1} "
25+
"{verify_inv:>9{form_inv}}"
26+
)
27+
28+
print(
29+
prnt_form.format(
30+
keygen="keygen",
31+
keygen_inv="keygen/s",
32+
sign="sign",
33+
sign_inv="sign/s",
34+
verify="verify",
35+
verify_inv="verify/s",
36+
name="",
37+
sep="",
38+
unit="",
39+
form="",
40+
form_inv="",
41+
)
42+
)
43+
44+
for size in [1024, 2048, 3072, 4096]:
45+
S1 = "from tlslite.utils.python_rsakey import Python_RSAKey"
46+
S2 = "from tlslite.utils.cryptomath import secureHash"
47+
S3 = "key = Python_RSAKey.generate(%s)" % size
48+
S4 = "msg = b'msg'"
49+
S5 = "msg_hash = secureHash(msg, 'sha1')"
50+
S6 = "sig = key.sign(msg_hash)"
51+
S7 = "key.verify(sig, msg_hash)"
52+
keygen = do([S1, S2], S3)
53+
sign = do([S1, S2, S3, S4, S5], S6)
54+
verf = do([S1, S2, S3, S4, S5, S6], S7)
55+
56+
print(
57+
prnt_form.format(
58+
name="RSA {0} bits".format(size),
59+
sep=":",
60+
unit="s",
61+
keygen=keygen,
62+
keygen_inv=1.0 / keygen,
63+
sign=sign,
64+
sign_inv=1.0 / sign,
65+
verify=verf,
66+
verify_inv=1.0 / verf,
67+
form=".5f",
68+
form_inv=".2f",
69+
)
70+
)
71+
72+
print("")
73+

0 commit comments

Comments
 (0)