5
5
import matplotlib .pyplot as plt
6
6
from matplotlib .colors import XKCD_COLORS as plot_colors
7
7
8
- safelock_cmd = "safelock-cli"
8
+ safelock_cmd = "~/Projects/safelock-cli/ safelock-cli"
9
9
pwd = "123456789"
10
10
rest = "60s"
11
11
input_path = "Videos"
12
12
output_name = "test"
13
13
output_dir = "safelock_dump"
14
14
runs = 3
15
15
figure_width = 14
16
- figure_height = 2.5
17
- bar_width = 0.6
16
+ figure_height = 2.3
17
+ bar_width = 0.65
18
18
measure = "Seconds"
19
19
root = os .getcwd ()
20
20
21
- def get_label (i , clean = False , key = "command" ):
21
+ def get_label (i , key = "command" ):
22
22
matchers = [
23
23
('gpg' , 'gpgtar' ,),
24
24
('7z' , '7zip (fastest)' ,),
25
25
('age' , 'age (tar-zstd)' ),
26
26
('safelock' , 'safelock' ,),
27
27
]
28
- label = next ((v for m , v in matchers if m in i [key ]))
29
28
30
- if clean :
31
- return label
32
- if key == "label" :
33
- return f"{ label } \n { i ['size' ]:.2f} MB"
34
-
35
- return f"{ label } \n { i ['median' ]:.3f} s"
29
+ return next ((v for m , v in matchers if m in i [key ]))
36
30
37
31
def get_name (i ):
38
32
matchers = [
@@ -48,8 +42,8 @@ def encrypt():
48
42
err = os .system (
49
43
f"hyperfine --runs { runs } --prepare "
50
44
f"'sleep { rest } ' "
51
- f"'echo \" { pwd } \" | { safelock_cmd } encrypt { input_path } { get_name ('safelock' )} --quiet' "
52
45
f"'tar cv --zstd { input_path } | . { root } /pipe_age_password.sh | age -e -p -o { get_name ('age' )} ' "
46
+ f"'echo \" { pwd } \" | { safelock_cmd } encrypt { input_path } { get_name ('safelock' )} --quiet' "
53
47
f"'7z a -p{ pwd } -mx1 { get_name ('7z' )} { input_path } ' "
54
48
f"'gpgtar -e -o { get_name ('gpg' )} -c --yes --batch --gpg-args \" --passphrase { pwd } \" { input_path } ' "
55
49
f"--export-json { root } /encryption.json"
@@ -62,8 +56,8 @@ def decrypt():
62
56
err = os .system (
63
57
f"hyperfine --runs { runs } --prepare "
64
58
f"'rm -rf { output_dir } { output_name } _*_ && mkdir { output_dir } && sleep { rest } ' "
65
- f"'echo \" { pwd } \" | { safelock_cmd } decrypt { get_name ('safelock' )} { output_dir } --quiet' "
66
59
f"'sleep 0.05; xdotool type \" { pwd } \" ; xdotool key \" Return\" | age --decrypt { get_name ('age' )} | tar x --zstd -f - -C { output_dir } ' "
60
+ f"'echo \" { pwd } \" | { safelock_cmd } decrypt { get_name ('safelock' )} { output_dir } --quiet' "
67
61
f"'7z e -y -p{ pwd } -mx1 { get_name ('7z' )} -o{ output_dir } ' "
68
62
f"'gpgtar -d --yes --batch --gpg-args \" --passphrase { pwd } \" { get_name ('gpg' )} ' "
69
63
f"--export-json { root } /decryption.json"
@@ -73,8 +67,8 @@ def decrypt():
73
67
exit (err )
74
68
75
69
os .chdir (os .path .expanduser ("~" ))
76
- # encrypt()
77
- # decrypt()
70
+ encrypt ()
71
+ decrypt ()
78
72
os .chdir (root )
79
73
plt .margins (3.5 )
80
74
@@ -85,16 +79,15 @@ def decrypt():
85
79
data = sorted (json .load (f )['results' ], key = lambda i : i ['median' ])
86
80
labels = [get_label (i ) for i in data ]
87
81
scores = [i ['median' ] for i in data ]
88
- colors_map = {get_label (i , 1 ): random .choice (list (plot_colors .values ())) for i in data }
89
- colors = [colors_map [get_label (i , 1 )] for i in data ]
82
+ colors_map = {get_label (i ): random .choice (list (plot_colors .values ())) for i in data }
83
+ colors = [colors_map [get_label (i )] for i in data ]
90
84
91
85
fig , ax = plt .subplots ()
92
86
ax .set_title ('Encryption Time' )
93
87
ax .set_xlabel (measure )
94
- ax .yaxis .set_label_position ('right' )
95
- ax .set_ylabel ('lower is better' )
96
- ax .grid (zorder = 0 , axis = 'x' , color = 'black' )
88
+ ax .grid (zorder = 0 , axis = 'x' )
97
89
ax .barh (labels , scores , bar_width , color = colors , zorder = 3 )
90
+ ax .bar_label (ax .containers [0 ], label_type = 'edge' , padding = 3 , fmt = lambda i : f"{ i :.2f} " )
98
91
fig .set_size_inches (w = figure_width , h = figure_height )
99
92
fig .tight_layout ()
100
93
fig .savefig ("encryption-time.webp" , transparent = True , format = "webp" )
@@ -106,15 +99,14 @@ def decrypt():
106
99
data = sorted (json .load (f )['results' ], key = lambda i : i ['median' ])
107
100
labels = [get_label (i ) for i in data ]
108
101
decryption = [i ['median' ] for i in data ]
109
- colors = [colors_map [get_label (i , 1 )] for i in data ]
102
+ colors = [colors_map [get_label (i )] for i in data ]
110
103
111
104
fig , ax = plt .subplots ()
112
105
ax .set_title ('Decryption Time' )
113
106
ax .set_xlabel (measure )
114
- ax .yaxis .set_label_position ('right' )
115
- ax .set_ylabel ('lower is better' )
116
- ax .grid (zorder = 0 , axis = 'x' , color = 'black' )
107
+ ax .grid (zorder = 0 , axis = 'x' )
117
108
ax .barh (labels , decryption , bar_width , color = colors , zorder = 3 )
109
+ ax .bar_label (ax .containers [0 ], label_type = 'edge' , padding = 3 , fmt = lambda i : f"{ i :.2f} " )
118
110
fig .set_size_inches (w = figure_width , h = figure_height )
119
111
fig .tight_layout ()
120
112
fig .savefig ("decryption-time.webp" , transparent = True , format = "webp" )
@@ -126,20 +118,19 @@ def decrypt():
126
118
data = sorted ([{
127
119
'size' : os .path .getsize (get_name (get_label (i ))) / 1024 / 1024 ,
128
120
'label' : get_label (i ),
129
- 'color' : colors_map [get_label (i , 1 )],
121
+ 'color' : colors_map [get_label (i )],
130
122
} for i in data ], key = lambda i : i ['size' ])
131
123
os .chdir (root )
132
- labels = [get_label (i , key = 'label' ) for i in data ]
124
+ labels = [get_label (i , 'label' ) for i in data ]
133
125
sizes = [i ['size' ] for i in data ]
134
126
colors = [i ['color' ] for i in data ]
135
127
136
128
fig , ax = plt .subplots ()
137
129
ax .set_title ('File Size' )
138
- ax .set_xlabel ("Megabytes" )
139
- ax .yaxis .set_label_position ('right' )
140
- ax .set_ylabel ('lower is better' )
141
- ax .grid (zorder = 0 , axis = 'x' , color = 'black' )
130
+ ax .set_xlabel ("MegaBytes" )
131
+ ax .grid (zorder = 0 , axis = 'x' )
142
132
ax .barh (labels , sizes , bar_width , color = colors , zorder = 3 )
133
+ ax .bar_label (ax .containers [0 ], label_type = 'edge' , padding = 3 , fmt = lambda i : f"{ i :.0f} " )
143
134
fig .set_size_inches (w = figure_width , h = figure_height )
144
135
fig .tight_layout ()
145
136
fig .savefig ("file-size.webp" , transparent = True , format = "webp" )
0 commit comments