You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
message =MyMessage.decode(tmp); //Calls are compatible
102
101
```
103
102
104
103
## API
@@ -130,97 +129,97 @@ String | A UTF-8 encoded string. Equivalent to Data with some post processing. C
130
129
131
130
## Benchmarks
132
131
133
-
The following benchmark compares Protobuf to this implementation for some basic data structure and a long string of length at least N. `binary-encoder-buf` uses a preallocated buffer for all operations. `binary-encoder-compiled` uses an experimental API that generates a structural function (rather than recursive) that is much more efficient.
132
+
The following benchmark compares Protobuf to this implementation for some basic data structure and a long string of length at least N. `binary-encoder-buf` uses a preallocated buffer for all operations. `binary-encoder-compiled` uses an API that generates a structural function (rather than recursive) that is much more efficient. This API has replaced the old transcoding functions in version 0.4
134
133
135
134
```
136
-
protobuf (encode) x 263,847 ops/sec ±2.28% (85 runs sampled)
137
-
binary-encoder (encode) x 64,397 ops/sec ±3.27% (77 runs sampled)
138
-
binary-encoder-buf (encode) x 166,912 ops/sec ±2.63% (80 runs sampled)
139
-
binary-encoder-compiled (encode) x 252,473 ops/sec ±2.53% (83 runs sampled)
140
-
binary-encoder-compiled-buf (encode) x 368,113 ops/sec ±2.07% (85 runs sampled)
141
-
json (encode) x 304,341 ops/sec ±2.20% (88 runs sampled)
135
+
protobuf (encode) x 275,101 ops/sec ±2.73% (86 runs sampled)
136
+
binary-encoder (encode) x 279,292 ops/sec ±1.89% (86 runs sampled)
137
+
binary-encoder-buf (encode) x 378,238 ops/sec ±3.42% (91 runs sampled)
138
+
binary-encoder-compiled (encode) x 302,381 ops/sec ±1.64% (84 runs sampled)
139
+
binary-encoder-compiled-buf (encode) x 396,369 ops/sec ±0.80% (94 runs sampled)
140
+
json (encode) x 334,773 ops/sec ±1.24% (91 runs sampled)
142
141
Fastest Encoding for N=10 is binary-encoder-compiled-buf (encode)
143
142
144
-
protobuf (decode) x 888,844 ops/sec ±2.16% (81 runs sampled)
145
-
binary-encoder (decode) x 305,803 ops/sec ±2.70% (76 runs sampled)
146
-
binary-encoder-compiled (decode) x 570,504 ops/sec ±1.87% (88 runs sampled)
147
-
json (decode) x 1,087,999 ops/sec ±2.08% (87 runs sampled)
143
+
protobuf (decode) x 1,003,710 ops/sec ±2.11% (95 runs sampled)
144
+
binary-encoder (decode) x 577,905 ops/sec ±0.59% (92 runs sampled)
145
+
binary-encoder-compiled (decode) x 619,247 ops/sec ±1.12% (92 runs sampled)
146
+
json (decode) x 1,218,423 ops/sec ±1.39% (93 runs sampled)
148
147
Fastest Decoding for N=10 is json (decode)
149
148
150
149
Message sizes:
151
150
protobuf 102 bytes
152
151
binary-encoder 95
153
152
json 265
154
153
155
-
protobuf (encode) x 248,611 ops/sec ±2.20% (84 runs sampled)
156
-
binary-encoder (encode) x 69,762 ops/sec ±1.77% (84 runs sampled)
157
-
binary-encoder-buf (encode) x 171,689 ops/sec ±3.98% (81 runs sampled)
158
-
binary-encoder-compiled (encode) x 224,163 ops/sec ±3.91% (75 runs sampled)
159
-
binary-encoder-compiled-buf (encode) x 332,148 ops/sec ±3.53% (79 runs sampled)
160
-
json (encode) x 125,643 ops/sec ±2.27% (83 runs sampled)
161
-
Fastest Encoding for N=100 is binary-encoder-compiled-buf (encode)
162
-
163
-
protobuf (decode) x 849,158 ops/sec ±3.50% (83 runs sampled)
164
-
binary-encoder (decode) x 309,057 ops/sec ±2.86% (78 runs sampled)
165
-
binary-encoder-compiled (decode) x 481,219 ops/sec ±4.96% (74 runs sampled)
166
-
json (decode) x 631,153 ops/sec ±1.97% (87 runs sampled)
154
+
protobuf (encode) x 302,829 ops/sec ±0.61% (93 runs sampled)
155
+
binary-encoder (encode) x 292,029 ops/sec ±2.80% (83 runs sampled)
156
+
binary-encoder-buf (encode) x 387,583 ops/sec ±2.05% (92 runs sampled)
157
+
binary-encoder-compiled (encode) x 317,967 ops/sec ±1.79% (90 runs sampled)
158
+
binary-encoder-compiled-buf (encode) x 390,195 ops/sec ±2.22% (94 runs sampled)
159
+
json (encode) x 139,347 ops/sec ±1.84% (90 runs sampled)
160
+
Fastest Encoding for N=100 is binary-encoder-compiled-buf (encode),binary-encoder-buf (encode)
161
+
162
+
protobuf (decode) x 988,917 ops/sec ±1.54% (89 runs sampled)
163
+
binary-encoder (decode) x 611,869 ops/sec ±2.07% (90 runs sampled)
164
+
binary-encoder-compiled (decode) x 625,291 ops/sec ±0.65% (93 runs sampled)
165
+
json (decode) x 701,532 ops/sec ±2.00% (93 runs sampled)
167
166
Fastest Decoding for N=100 is protobuf (decode)
168
167
169
168
Message sizes:
170
169
protobuf 190 bytes
171
170
binary-encoder 183
172
171
json 529
173
172
174
-
protobuf (encode) x 218,729 ops/sec ±3.15% (78 runs sampled)
175
-
binary-encoder (encode) x 64,804 ops/sec ±2.43% (85 runs sampled)
176
-
binary-encoder-buf (encode) x 173,645 ops/sec ±2.57% (82 runs sampled)
177
-
binary-encoder-compiled (encode) x 218,610 ops/sec ±3.87% (73 runs sampled)
178
-
binary-encoder-compiled-buf (encode) x 357,404 ops/sec ±2.50% (84 runs sampled)
179
-
json (encode) x 18,060 ops/sec ±2.86% (85 runs sampled)
173
+
protobuf (encode) x 265,475 ops/sec ±1.54% (89 runs sampled)
174
+
binary-encoder (encode) x 272,316 ops/sec ±2.26% (89 runs sampled)
175
+
binary-encoder-buf (encode) x 361,452 ops/sec ±2.31% (89 runs sampled)
176
+
binary-encoder-compiled (encode) x 276,349 ops/sec ±2.03% (87 runs sampled)
177
+
binary-encoder-compiled-buf (encode) x 389,293 ops/sec ±0.95% (91 runs sampled)
178
+
json (encode) x 20,450 ops/sec ±2.52% (90 runs sampled)
180
179
Fastest Encoding for N=1000 is binary-encoder-compiled-buf (encode)
181
180
182
-
protobuf (decode) x 907,313 ops/sec ±1.46% (89 runs sampled)
183
-
binary-encoder (decode) x 339,065 ops/sec ±1.98% (86 runs sampled)
184
-
binary-encoder-compiled (decode) x 580,952 ops/sec ±1.68% (86 runs sampled)
185
-
json (decode) x 138,365 ops/sec ±1.58% (90 runs sampled)
181
+
protobuf (decode) x 1,005,756 ops/sec ±0.64% (90 runs sampled)
182
+
binary-encoder (decode) x 600,982 ops/sec ±2.93% (93 runs sampled)
183
+
binary-encoder-compiled (decode) x 608,827 ops/sec ±1.73% (86 runs sampled)
184
+
json (decode) x 150,480 ops/sec ±0.92% (97 runs sampled)
186
185
Fastest Decoding for N=1000 is protobuf (decode)
187
186
188
187
Message sizes:
189
188
protobuf 1091 bytes
190
189
binary-encoder 1084
191
190
json 3229
192
191
193
-
protobuf (encode) x 143,791 ops/sec ±4.72% (76 runs sampled)
194
-
binary-encoder (encode) x 44,473 ops/sec ±3.73% (81 runs sampled)
195
-
binary-encoder-buf (encode) x 162,560 ops/sec ±2.35% (82 runs sampled)
196
-
binary-encoder-compiled (encode) x 82,039 ops/sec ±6.18% (65 runs sampled)
197
-
binary-encoder-compiled-buf (encode) x 289,004 ops/sec ±3.98% (81 runs sampled)
198
-
json (encode) x 1,675 ops/sec ±5.04% (77 runs sampled)
192
+
protobuf (encode) x 188,602 ops/sec ±1.95% (90 runs sampled)
193
+
binary-encoder (encode) x 96,150 ops/sec ±6.07% (75 runs sampled)
194
+
binary-encoder-buf (encode) x 323,255 ops/sec ±2.10% (92 runs sampled)
195
+
binary-encoder-compiled (encode) x 91,660 ops/sec ±6.28% (70 runs sampled)
196
+
binary-encoder-compiled-buf (encode) x 324,058 ops/sec ±1.82% (93 runs sampled)
197
+
json (encode) x 2,152 ops/sec ±2.42% (94 runs sampled)
199
198
Fastest Encoding for N=10000 is binary-encoder-compiled-buf (encode)
200
199
201
-
protobuf (decode) x 848,061 ops/sec ±3.28% (82 runs sampled)
202
-
binary-encoder (decode) x 338,013 ops/sec ±1.77% (84 runs sampled)
203
-
binary-encoder-compiled (decode) x 563,351 ops/sec ±2.63% (84 runs sampled)
204
-
json (decode) x 16,073 ops/sec ±0.91% (93 runs sampled)
200
+
protobuf (decode) x 1,003,324 ops/sec ±1.62% (94 runs sampled)
201
+
binary-encoder (decode) x 620,480 ops/sec ±1.18% (93 runs sampled)
202
+
binary-encoder-compiled (decode) x 604,111 ops/sec ±1.75% (91 runs sampled)
203
+
json (decode) x 16,745 ops/sec ±1.37% (89 runs sampled)
205
204
Fastest Decoding for N=10000 is protobuf (decode)
206
205
207
206
Message sizes:
208
207
protobuf 10091 bytes
209
208
binary-encoder 10084
210
209
json 30229
211
210
212
-
protobuf (encode) x 35,712 ops/sec ±8.44% (72 runs sampled)
213
-
binary-encoder (encode) x 11,461 ops/sec ±6.95% (75 runs sampled)
214
-
binary-encoder-buf (encode) x 99,910 ops/sec ±1.93% (87 runs sampled)
215
-
binary-encoder-compiled (encode) x 15,237 ops/sec ±5.31% (82 runs sampled)
216
-
binary-encoder-compiled-buf (encode) x 149,437 ops/sec ±1.35% (90 runs sampled)
217
-
json (encode) x 171 ops/sec ±3.47% (72 runs sampled)
218
-
Fastest Encoding for N=100000 is binary-encoder-compiled-buf (encode)
219
-
220
-
protobuf (decode) x 842,279 ops/sec ±2.77% (82 runs sampled)
221
-
binary-encoder (decode) x 316,650 ops/sec ±2.88% (81 runs sampled)
222
-
binary-encoder-compiled (decode) x 591,702 ops/sec ±1.93% (85 runs sampled)
223
-
json (decode) x 1,632 ops/sec ±0.68% (91 runs sampled)
211
+
protobuf (encode) x 43,479 ops/sec ±7.56% (76 runs sampled)
212
+
binary-encoder (encode) x 17,175 ops/sec ±3.98% (84 runs sampled)
213
+
binary-encoder-buf (encode) x 144,706 ops/sec ±1.55% (91 runs sampled)
214
+
binary-encoder-compiled (encode) x 16,500 ops/sec ±5.55% (83 runs sampled)
215
+
binary-encoder-compiled-buf (encode) x 139,586 ops/sec ±2.27% (91 runs sampled)
216
+
json (encode) x 196 ops/sec ±0.73% (82 runs sampled)
217
+
Fastest Encoding for N=100000 is binary-encoder-buf (encode)
218
+
219
+
protobuf (decode) x 1,005,751 ops/sec ±1.22% (95 runs sampled)
220
+
binary-encoder (decode) x 626,437 ops/sec ±0.65% (91 runs sampled)
221
+
binary-encoder-compiled (decode) x 613,772 ops/sec ±1.72% (94 runs sampled)
222
+
json (decode) x 1,725 ops/sec ±1.14% (93 runs sampled)
224
223
Fastest Decoding for N=100000 is protobuf (decode)
0 commit comments