• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

rencode/H21-Oct-2018-12,1247,496

rencode.egg-info/H03-May-2022-204153

tests/H03-May-2022-595399

COPYINGH A D21-Oct-201834.3 KiB675553

MANIFEST.inH A D21-Oct-201879 54

PKG-INFOH A D21-Oct-20185.9 KiB204153

README.mdH A D21-Oct-20184.2 KiB193143

setup.cfgH A D21-Oct-201838 53

setup.pyH A D03-May-20222.6 KiB9355

README.md

1# rencode
2
3The rencode module is similar to bencode from the BitTorrent project.  For complex, heterogeneous data structures with many small elements, r-encodings take up significantly less space than b-encodings:
4
5```
6>>> len(rencode.dumps({'a':0, 'b':[1,2], 'c':99}))
713
8
9>>> len(bencode.bencode({'a':0, 'b':[1,2], 'c':99}))
1026
11```
12
13This version of rencode is a complete rewrite in Cython to attempt to increase the performance over the pure Python module written by Petru Paler, Connelly Barnes et al.
14
15
16## Performance Comparison
17The test program used for these results is included in the repository:
18https://github.com/aresch/rencode/blob/master/tests/timetest.py
19
20### Encode functions
21```
22test_encode_fixed_pos_int:
23	rencode.pyx: 0.003s (+0.013s) 589.17%
24	rencode.py:  0.016s
25
26test_encode_int_int_size:
27	rencode.pyx: 0.006s (+0.032s) 625.99%
28	rencode.py:  0.038s
29
30test_encode_int_long_long_size:
31	rencode.pyx: 0.014s (+0.026s) 279.96%
32	rencode.py:  0.040s
33
34test_encode_int_short_size:
35	rencode.pyx: 0.006s (+0.030s) 629.80%
36	rencode.py:  0.036s
37
38test_encode_str:
39	rencode.pyx: 0.006s (+0.010s) 263.96%
40	rencode.py:  0.017s
41
42test_encode_dict:
43	rencode.pyx: 0.135s (+0.302s) 324.68%
44	rencode.py:  0.437s
45
46test_encode_fixed_list:
47	rencode.pyx: 0.012s (+0.025s) 307.78%
48	rencode.py:  0.037s
49
50test_encode_fixed_neg_int:
51	rencode.pyx: 0.003s (+0.012s) 536.97%
52	rencode.py:  0.015s
53
54test_encode_fixed_dict:
55	rencode.pyx: 0.046s (+0.105s) 331.07%
56	rencode.py:  0.151s
57
58test_encode_int_char_size:
59	rencode.pyx: 0.005s (+0.029s) 687.64%
60	rencode.py:  0.034s
61
62test_encode_fixed_str:
63	rencode.pyx: 0.003s (+0.011s) 438.07%
64	rencode.py:  0.015s
65
66test_encode_list:
67	rencode.pyx: 0.148s (+0.228s) 253.68%
68	rencode.py:  0.376s
69
70test_encode_none:
71	rencode.pyx: 0.004s (+0.011s) 386.06%
72	rencode.py:  0.014s
73
74test_encode_int_big_number:
75	rencode.pyx: 0.011s (+0.019s) 264.32%
76	rencode.py:  0.030s
77
78test_encode_float_64bit:
79	rencode.pyx: 0.003s (+0.011s) 416.19%
80	rencode.py:  0.014s
81
82test_encode_bool:
83	rencode.pyx: 0.004s (+0.014s) 447.57%
84	rencode.py:  0.018s
85
86test_encode_float_32bit:
87	rencode.pyx: 0.003s (+0.010s) 417.86%
88	rencode.py:  0.014s
89
90Encode functions totals:
91	rencode.pyx: 0.412s (+0.888s) 315.49%
92	rencode.py:  1.301s
93```
94### Decode functions
95
96```
97test_decode_fixed_list:
98	rencode.pyx: 0.003s (+0.020s) 848.67%
99	rencode.py:  0.022s
100
101test_decode_int_long_long_size:
102	rencode.pyx: 0.003s (+0.013s) 484.80%
103	rencode.py:  0.016s
104
105test_decode_dict:
106	rencode.pyx: 0.267s (+0.406s) 251.81%
107	rencode.py:  0.673s
108
109test_decode_fixed_dict:
110	rencode.pyx: 0.087s (+0.123s) 241.32%
111	rencode.py:  0.211s
112
113test_decode_float_32bit:
114	rencode.pyx: 0.002s (+0.007s) 536.88%
115	rencode.py:  0.009s
116
117test_decode_int_big_number:
118	rencode.pyx: 0.007s (+0.010s) 256.05%
119	rencode.py:  0.017s
120
121test_decode_int_char_size:
122	rencode.pyx: 0.002s (+0.014s) 754.12%
123	rencode.py:  0.016s
124
125test_decode_fixed_neg_int:
126	rencode.pyx: 0.001s (+0.004s) 389.03%
127	rencode.py:  0.006s
128
129test_decode_fixed_str:
130	rencode.pyx: 0.009s (+0.009s) 199.78%
131	rencode.py:  0.019s
132
133test_decode_float_64bit:
134	rencode.pyx: 0.002s (+0.007s) 540.17%
135	rencode.py:  0.009s
136
137test_decode_bool:
138	rencode.pyx: 0.002s (+0.004s) 369.49%
139	rencode.py:  0.006s
140
141test_decode_fixed_pos_int:
142	rencode.pyx: 0.002s (+0.004s) 368.96%
143	rencode.py:  0.006s
144
145test_decode_list:
146	rencode.pyx: 0.019s (+0.247s) 1403.77%
147	rencode.py:  0.266s
148
149test_decode_none:
150	rencode.pyx: 0.002s (+0.004s) 367.05%
151	rencode.py:  0.006s
152
153test_decode_int_short_size:
154	rencode.pyx: 0.002s (+0.014s) 716.47%
155	rencode.py:  0.016s
156
157test_decode_str:
158	rencode.pyx: 0.010s (+0.026s) 364.51%
159	rencode.py:  0.036s
160
161test_decode_int_int_size:
162	rencode.pyx: 0.002s (+0.014s) 705.92%
163	rencode.py:  0.016s
164
165Decode functions totals:
166	rencode.pyx: 0.421s (+0.926s) 319.79%
167	rencode.py:  1.348s
168```
169
170### Overall functions
171
172```
173test_overall_encode:
174	rencode.pyx: 0.069s (+0.120s) 274.42%
175	rencode.py:  0.189s
176
177test_overall_decode:
178	rencode.pyx: 0.051s (+0.153s) 400.57%
179	rencode.py:  0.204s
180
181Overall functions totals:
182	rencode.pyx: 0.120s (+0.273s) 327.98%
183	rencode.py:  0.393s
184```
185
186
187## Author
188* Andrew Resch <andrewresch@gmail.com>
189* Website: https://github.com/aresch/rencode
190
191## License
192See [COPYING](https://github.com/aresch/rencode/blob/master/COPYING)  for license information.
193