1.0.1-alpha.155 • Published 8 months ago

@deepkit/bson v1.0.1-alpha.155

Weekly downloads
40
License
MIT
Repository
github
Last release
8 months ago

BSON

@deepkit/bson is a high-performance TS implementation of a parser and serializer for BSON, the MongoDB Binary JSON format. It's the fastest JS BSON parser, even faster than native JSON.parse/stringify.

Deepkit has reimplemented it because it's a high-performance framework and both the official JS (js-bson) and C++ (bson-ext) packages are too slow. How slow? When converting 10k elements in an array, js-bson takes 25ms, bson-ext takes 31ms, whiles JSON.parse takes only 5ms. This makes the official BSON parser 5x slower than native JSON.parse. deepkit/type-bson on the other hand takes only 2ms and is therefore 13x faster.

Benchmark

Parsing BSON buffer that contains an array with 10k objects.

MethodTime (ms)
official native bson-ext31ms
official js-bson25ms
deepkit/bson generic v26ms
deepkit/bson generic v34ms
JSON.parse5ms
deepkit/type JIT2ms

Serializing an array with 10k objects.

MethodTime (ms)
official native bson-ext39ms
official js-bson33ms
JSON.stringify5ms
deepkit/bson JIT2ms

"deepkit/bson JIT" means a parser/serializer based on a schema like so:

import {t} from '@deepkit/type';
import {getBSONDecoder} from '@deepkit/bson';

interface Model {
    username: string;
    tags: string[];
    priority: number;
}

const decoder = getBSONDecoder<Model>();
const bson = new Buffer([]);

const document = decoder(bson);

whereas "deepkit/type generic" means schema-less:

import {parseObject, ParserV2, ParserV3} from '@deepkit/bson';
const bson = new Buffer([]);

const object1 = parseObject(new ParserV2(bson));

const object2 = parseObject(new ParserV3(bson));

Differences

There are a couple of differences to the official serializer.

  • ObjectId is deserialized as string.
  • UUID is deserialized as string.
  • BigInt is supported and serialized as long.
  • Unlimited size BigInt supported (serialised as binary)
  • Long is deserialized as BigInt.
1.0.1-alpha.155

8 months ago

1.0.1-alpha.154

9 months ago

1.0.1-alpha.153

1 year ago

1.0.1-alpha.151

1 year ago

1.0.1-alpha.150

1 year ago

1.0.1-alpha.149

1 year ago

1.0.1-alpha.148

1 year ago

1.0.1-alpha.147

1 year ago

1.0.1-alpha.146

1 year ago

1.0.1-alpha.145

1 year ago

1.0.1-alpha.143

1 year ago

1.0.1-alpha.142

1 year ago

1.0.1-alpha.141

1 year ago

1.0.1-alpha.140

1 year ago

1.0.1-alpha.139

1 year ago

1.0.1-alpha.138

1 year ago

1.0.1-alpha.137

1 year ago

1.0.1-alpha.135

1 year ago

1.0.1-alpha.133

1 year ago

1.0.1-alpha.134

1 year ago

1.0.1-alpha.132

1 year ago

1.0.1-alpha.131

1 year ago

1.0.1-alpha.124

1 year ago

1.0.1-alpha.123

1 year ago

1.0.1-alpha.121

1 year ago

1.0.1-alpha.120

1 year ago

1.0.1-alpha.119

1 year ago

1.0.1-alpha.117

1 year ago

1.0.1-alpha.116

1 year ago

1.0.1-alpha.114

1 year ago

1.0.1-alpha.113

1 year ago

1.0.1-alpha.112

1 year ago

1.0.1-alpha.111

1 year ago

1.0.1-alpha.110

1 year ago

1.0.1-alpha.109

1 year ago

1.0.1-alpha.105

2 years ago

1.0.1-alpha.102

2 years ago

1.0.1-alpha.100

2 years ago

1.0.1-alpha.101

2 years ago

1.0.1-alpha.108

2 years ago

1.0.1-alpha.95

2 years ago

1.0.1-alpha.94

2 years ago

1.0.1-alpha.93

2 years ago

1.0.1-alpha.97

2 years ago

1.0.1-alpha.96

2 years ago

1.0.1-alpha.92

2 years ago

1.0.1-alpha.91

2 years ago

1.0.1-alpha.90

2 years ago

1.0.1-alpha.89

2 years ago

1.0.1-alpha.87

2 years ago

1.0.1-alpha.86

2 years ago

1.0.1-alpha.77

3 years ago

1.0.1-alpha.84

2 years ago

1.0.1-alpha.83

3 years ago

1.0.1-alpha.85

2 years ago

1.0.1-alpha.72

3 years ago

1.0.1-alpha.75

3 years ago

1.0.1-alpha.74

3 years ago

1.0.1-alpha.68

3 years ago

1.0.1-alpha.67

3 years ago

1.0.1-alpha.65

3 years ago

1.0.1-alpha.63

3 years ago

1.0.1-alpha.71

3 years ago

1.0.1-alpha.70

3 years ago

1.0.1-alpha.62

3 years ago

1.0.1-alpha.61

3 years ago

1.0.1-alpha.59

3 years ago

1.0.1-alpha.58

4 years ago

1.0.1-alpha.56

4 years ago

1.0.1-alpha.52

4 years ago

1.0.1-alpha.48

4 years ago

1.0.1-alpha.51

4 years ago

1.0.1-alpha.44

4 years ago

1.0.1-alpha.43

4 years ago

1.0.1-alpha.42

4 years ago

1.0.1-alpha.40

4 years ago

1.0.1-alpha.39

4 years ago

1.0.1-alpha.35

4 years ago

1.0.1-alpha.34

4 years ago

1.0.1-alpha.33

4 years ago

1.0.1-alpha.31

4 years ago

1.0.1-alpha.30

4 years ago

1.0.1-alpha.29

4 years ago

1.0.1-alpha.28

4 years ago

1.0.1-alpha.26

4 years ago

1.0.1-alpha.27

4 years ago

1.0.1-alpha.25

4 years ago

1.0.1-alpha.24

4 years ago

1.0.1-alpha.22

4 years ago

1.0.1-alpha.21

4 years ago

1.0.1-alpha.20

4 years ago

1.0.1-alpha.19

4 years ago

1.0.1-alpha.18

4 years ago

1.0.1-alpha.17

4 years ago

1.0.1-alpha.16

4 years ago

1.0.1-alpha.13

4 years ago

1.0.1-alpha.12

4 years ago

1.0.1-alpha.11

4 years ago

1.0.1-alpha.10

4 years ago

1.0.1-alpha.9

4 years ago

1.0.1-alpha.8

4 years ago

1.0.1-alpha.7

4 years ago

1.0.1-alpha.6

4 years ago

1.0.1-alpha.5

4 years ago

1.0.1-alpha.4

4 years ago

1.0.1-alpha.3

4 years ago

1.0.1-alpha.1

5 years ago

1.0.0-alpha.19

5 years ago

1.0.1-alpha.0

5 years ago

1.0.0-alpha.21

5 years ago

1.0.0-alpha.20

5 years ago

1.0.0-alpha.16

5 years ago

1.0.0-alpha.15

5 years ago

1.0.0-alpha.18

5 years ago

1.0.0-alpha.17

5 years ago

1.0.0-alpha.14

5 years ago

1.0.0-alpha.13

5 years ago

1.0.0-alpha.12

5 years ago

1.0.0-alpha.11

5 years ago

1.0.0-alpha.10

5 years ago

1.0.0-alpha.9

5 years ago

1.0.0-alpha.8

5 years ago

1.0.0-alpha.7

5 years ago

1.0.0-alpha.6

5 years ago

1.0.0-alpha.5

5 years ago

1.0.0-alpha.4

5 years ago

1.0.0-y.0

5 years ago

1.0.0-alpha.3

5 years ago