Skip to content

Commit b543a8a

Browse files
0.3.3
1 parent 7e26e41 commit b543a8a

File tree

13 files changed

+421
-283
lines changed

13 files changed

+421
-283
lines changed

README.md

Lines changed: 94 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,27 +60,103 @@ yarn add array-buffer-serializer
6060

6161
## Table
6262

63-
Type | Economy (bytes)
64-
--- | ---
65-
*undefined* | 9
66-
*true* | 4
67-
*false* | 5
68-
*null* | 4
69-
*string* | 0
70-
*int8_t* | up to 3
71-
*int16_t* | up to 4
72-
*int32_t* | up to 7
73-
*int64_t* | up to 14
74-
*float* | up to 4
75-
*double* | up to 9
63+
<table>
64+
<tr>
65+
<th rowspan="2">Type</th>
66+
<th rowspan="2">Data</th>
67+
<th rowspan="2">Raw</th>
68+
<th colspan="2">Bytes</th>
69+
</tr>
70+
<tr>
71+
<th>Data</th>
72+
<th>Raw</th>
73+
</tr>
74+
<tr>
75+
<td>undefined</td>
76+
<td>[undefined]</td>
77+
<td><00 d4></td>
78+
<td>11</td>
79+
<td>2</td>
80+
</tr>
81+
<tr>
82+
<td>true</td>
83+
<td>[true]</td>
84+
<td><00 d2></td>
85+
<td>6</td>
86+
<td>2</td>
87+
</tr>
88+
<tr>
89+
<td>false</td>
90+
<td>[false]</td>
91+
<td><00 d0></td>
92+
<td>7</td>
93+
<td>2</td>
94+
</tr>
95+
<tr>
96+
<td>null</td>
97+
<td>[null]</td>
98+
<td><00 d6></td>
99+
<td>6</td>
100+
<td>2</td>
101+
</tr>
102+
<tr>
103+
<td>string</td>
104+
<td>["text"]</td>
105+
<td><00 dc 74 65 78 74 dc></td>
106+
<td>8</td>
107+
<td>7</td>
108+
</tr>
109+
<tr>
110+
<td>int8_t</td>
111+
<td>[255]</td>
112+
<td><00 c0 ff></td>
113+
<td>5</td>
114+
<td>3</td>
115+
</tr>
116+
<tr>
117+
<td>int16_t</td>
118+
<td>[-65535]</td>
119+
<td><00 c6 ff ff></td>
120+
<td>8</td>
121+
<td>4</td>
122+
</tr>
123+
<tr>
124+
<td>int32_t</td>
125+
<td>[4294967295]</td>
126+
<td><00 c8 ff ff ff ff></td>
127+
<td>12</td>
128+
<td>6</td>
129+
</tr>
130+
<tr>
131+
<td>bigint</td>
132+
<td>[-18446744073709551615n]</td>
133+
<td><00 e2 ff ff ff ff ff ff ff ff></td>
134+
<td>24</td>
135+
<td>10</td>
136+
</tr>
137+
<tr>
138+
<td>float</td>
139+
<td>[1.234567]</td>
140+
<td><00 d8 3f 9e 06 4b></td>
141+
<td>10</td>
142+
<td>6</td>
143+
</tr>
144+
<tr>
145+
<td>double</td>
146+
<td>[1.23456789012]</td>
147+
<td><00 da 3f f3 c0 ca 42 8c 1d 2b></td>
148+
<td>15</td>
149+
<td>10</td>
150+
</tr>
151+
</table>
76152

77153
## Features
78154

79-
* No model is needed to describe the data structure;
80-
* Uses type definition instead of object's key-value separator ":" and array items delimiter ",";
81-
* Uses unsigned data representation by default (uint8_t, uint16_t...);
82-
* Different marks for positive and negative numbers, so negative sign is for free;
83-
* Marks are divided into even and odd, each odd mark indicates at the first array value.
155+
* No model is needed to describe the data structure
156+
* Uses type definition instead of object's key-value separator ":" and array items delimiter ","
157+
* Uses unsigned data representation by default (uint8_t, uint16_t...)
158+
* Different marks for positive and negative numbers, so negative sign is for free
159+
* Marks are divided into even and odd, each odd mark indicates at the first array value
84160
85161
## License
86162

benchmarks/decoder-suite.js

Lines changed: 91 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -18,97 +18,98 @@ module.exports = function() {
1818
onStart: resetBuffer
1919
};
2020

21-
suite.add(
22-
"Decoder#Null",
23-
function() {
24-
dv.setUint8(1, marks.DEFAULT_MARK_NULL);
25-
decoder = new BufferDecoder(dv);
26-
decoder.decode();
27-
},
28-
opts
29-
)
30-
.add(
31-
"Decoder#Array",
32-
function() {
33-
dv.setUint8(1, marks.DEFAULT_MARK_INT8 + 1);
34-
dv.setUint8(2, 15);
35-
decoder = new BufferDecoder(dv);
36-
decoder.decode();
37-
},
38-
opts
39-
)
40-
.add(
41-
"Decoder#Dict",
42-
function() {
43-
dv.setUint8(1, marks.DEFAULT_MARK_OBJ_OPEN);
44-
dv.setUint8(2, 1);
45-
dv.setUint8(3, marks.DEFAULT_MARK_UINT8);
46-
dv.setUint8(4, 25);
47-
dv.setUint8(5, marks.DEFAULT_MARK_OBJ_CLOSE)
48-
decoder = new BufferDecoder(dv);
49-
for (let i = 0; i < 5; i++) decoder.decode();
50-
},
51-
opts
52-
)
53-
.add(
54-
"Decoder#String",
55-
function() {
56-
dv.setUint8(1, marks.DEFAULT_MARK_STR8);
57-
dv.setUint8(2, 1);
58-
dv.setUint8(3, 2);
59-
dv.setUint8(4, 3);
60-
dv.setUint8(5, marks.DEFAULT_MARK_STR8);
61-
decoder = new BufferDecoder(dv);
62-
decoder.decode();
63-
},
64-
opts
65-
)
66-
.add(
67-
"Decoder#Boolean",
68-
function() {
69-
dv.setUint8(1, marks.DEFAULT_MARK_TBOOL);
70-
decoder = new BufferDecoder(dv);
71-
decoder.decode();
72-
},
73-
opts
74-
)
75-
.add(
76-
"Decoder#Undefined",
77-
function() {
78-
dv.setUint8(1, marks.DEFAULT_MARK_UNDEF);
79-
decoder = new BufferDecoder(dv);
80-
decoder.decode();
81-
},
82-
opts
83-
)
84-
.add(
85-
"Decoder#Bigint",
86-
function() {
87-
dv.setUint8(1, marks.DEFAULT_MARK_UBIGINT);
88-
dv.setBigUint64(2, 25n);
89-
decoder = new BufferDecoder(dv);
90-
decoder.decode();
91-
},
92-
opts
93-
)
94-
.add(
95-
"Decoder#Number",
96-
function() {
97-
dv.setUint8(1, marks.DEFAULT_MARK_UINT16);
98-
dv.setUint16(2, 305);
99-
decoder = new BufferDecoder(dv);
100-
decoder.decode();
101-
},
102-
opts
103-
)
104-
.on("cycle", function(event) {
105-
console.log(
106-
String(event.target)
21+
suite
22+
.add(
23+
"Decoder#Null",
24+
function() {
25+
dv.setUint8(1, marks.DEFAULT_MARK_NULL);
26+
decoder = new BufferDecoder(dv);
27+
decoder.decode();
28+
},
29+
opts
30+
)
31+
.add(
32+
"Decoder#Array",
33+
function() {
34+
dv.setUint8(1, marks.DEFAULT_MARK_INT8 + 1);
35+
dv.setUint8(2, 15);
36+
decoder = new BufferDecoder(dv);
37+
decoder.decode();
38+
},
39+
opts
40+
)
41+
.add(
42+
"Decoder#Dict",
43+
function() {
44+
dv.setUint8(1, marks.DEFAULT_MARK_OBJ_OPEN);
45+
dv.setUint8(2, 1);
46+
dv.setUint8(3, marks.DEFAULT_MARK_UINT8);
47+
dv.setUint8(4, 25);
48+
dv.setUint8(5, marks.DEFAULT_MARK_OBJ_CLOSE)
49+
decoder = new BufferDecoder(dv);
50+
for (let i = 0; i < 5; i++) decoder.decode();
51+
},
52+
opts
53+
)
54+
.add(
55+
"Decoder#String",
56+
function() {
57+
dv.setUint8(1, marks.DEFAULT_MARK_STR8);
58+
dv.setUint8(2, 1);
59+
dv.setUint8(3, 2);
60+
dv.setUint8(4, 3);
61+
dv.setUint8(5, marks.DEFAULT_MARK_STR8);
62+
decoder = new BufferDecoder(dv);
63+
decoder.decode();
64+
},
65+
opts
66+
)
67+
.add(
68+
"Decoder#Boolean",
69+
function() {
70+
dv.setUint8(1, marks.DEFAULT_MARK_TBOOL);
71+
decoder = new BufferDecoder(dv);
72+
decoder.decode();
73+
},
74+
opts
75+
)
76+
.add(
77+
"Decoder#Undefined",
78+
function() {
79+
dv.setUint8(1, marks.DEFAULT_MARK_UNDEF);
80+
decoder = new BufferDecoder(dv);
81+
decoder.decode();
82+
},
83+
opts
84+
)
85+
.add(
86+
"Decoder#Bigint",
87+
function() {
88+
dv.setUint8(1, marks.DEFAULT_MARK_UBIGINT);
89+
dv.setBigUint64(2, 25n);
90+
decoder = new BufferDecoder(dv);
91+
decoder.decode();
92+
},
93+
opts
94+
)
95+
.add(
96+
"Decoder#Number",
97+
function() {
98+
dv.setUint8(1, marks.DEFAULT_MARK_UINT16);
99+
dv.setUint16(2, 305);
100+
decoder = new BufferDecoder(dv);
101+
decoder.decode();
102+
},
103+
opts
104+
)
105+
.on(
106+
"cycle",
107+
function(event) {
108+
console.log(
109+
String(event.target)
110+
);
111+
}
107112
);
108-
})
109-
.on("complete", function() {
110-
console.log(`Fastest is ${this.filter("fastest").map("name")}`);
111-
})
112113

113114
return suite;
114115
};

0 commit comments

Comments
 (0)