-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbench_encode.py
More file actions
62 lines (48 loc) · 1.73 KB
/
Copy pathbench_encode.py
File metadata and controls
62 lines (48 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import base64
import base64_utils
ITERATIONS = 1_000
SMALL_DATA = b"t" * 1_000 # 1 KB
MEDIUM_DATA = b"t" * 100_000 # 100 KB
LARGE_DATA = b"t" * 1_000_000 # 1 MB
SMALL_DATA_ENCODED = base64.b64encode(SMALL_DATA)
MEDIUM_DATA_ENCODED = base64.b64encode(MEDIUM_DATA)
LARGE_DATA_ENCODED = base64.b64encode(LARGE_DATA)
def stdlib_b64encode(data, altchars=None) -> None:
for _ in range(ITERATIONS):
base64.b64encode(data, altchars=altchars)
def base64_utils_b64encode(data, altchars=None) -> None:
for _ in range(ITERATIONS):
base64_utils.b64encode(data, altchars=altchars)
def stdlib_b64decode(data, altchars=None, validate=False) -> None:
for _ in range(ITERATIONS):
base64.b64decode(data, altchars=altchars, validate=validate)
def base64_utils_b64decode(data, altchars=None, validate=False) -> None:
for _ in range(ITERATIONS):
base64_utils.b64decode(data, altchars=altchars, validate=validate)
__benchmarks__ = [
(
lambda: stdlib_b64encode(SMALL_DATA),
lambda: base64_utils_b64encode(SMALL_DATA),
"b64encode (1 KB data)",
),
(
lambda: stdlib_b64encode(MEDIUM_DATA),
lambda: base64_utils_b64encode(MEDIUM_DATA),
"b64encode (100 KB data)",
),
(
lambda: stdlib_b64encode(LARGE_DATA),
lambda: base64_utils_b64encode(LARGE_DATA),
"b64encode (1 MB data)",
),
(
lambda: stdlib_b64encode(MEDIUM_DATA, altchars=b"-_"),
lambda: base64_utils_b64encode(MEDIUM_DATA, altchars=b"-_"),
"b64encode (altchars + 100 KB data)",
),
(
lambda: stdlib_b64decode(MEDIUM_DATA_ENCODED),
lambda: base64_utils_b64decode(MEDIUM_DATA_ENCODED),
"b64decode (100 KB data)",
)
]