@peerbit/document 13.1.25 → 13.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +19 -18
- package/dist/benchmark/document-put.d.ts +0 -2
- package/dist/benchmark/document-put.d.ts.map +0 -1
- package/dist/benchmark/document-put.js +0 -1362
- package/dist/benchmark/document-put.js.map +0 -1
- package/dist/benchmark/file-ingest.d.ts +0 -2
- package/dist/benchmark/file-ingest.d.ts.map +0 -1
- package/dist/benchmark/file-ingest.js +0 -682
- package/dist/benchmark/file-ingest.js.map +0 -1
- package/dist/benchmark/index.d.ts +0 -2
- package/dist/benchmark/index.d.ts.map +0 -1
- package/dist/benchmark/index.js +0 -160
- package/dist/benchmark/index.js.map +0 -1
- package/dist/benchmark/iterate-replicate-2.d.ts +0 -2
- package/dist/benchmark/iterate-replicate-2.d.ts.map +0 -1
- package/dist/benchmark/iterate-replicate-2.js +0 -200
- package/dist/benchmark/iterate-replicate-2.js.map +0 -1
- package/dist/benchmark/iterate-replicate.d.ts +0 -2
- package/dist/benchmark/iterate-replicate.d.ts.map +0 -1
- package/dist/benchmark/iterate-replicate.js +0 -212
- package/dist/benchmark/iterate-replicate.js.map +0 -1
- package/dist/benchmark/memory/child.d.ts +0 -2
- package/dist/benchmark/memory/child.d.ts.map +0 -1
- package/dist/benchmark/memory/child.js +0 -187
- package/dist/benchmark/memory/child.js.map +0 -1
- package/dist/benchmark/memory/index.d.ts +0 -2
- package/dist/benchmark/memory/index.d.ts.map +0 -1
- package/dist/benchmark/memory/index.js +0 -81
- package/dist/benchmark/memory/index.js.map +0 -1
- package/dist/benchmark/memory/utils.d.ts +0 -13
- package/dist/benchmark/memory/utils.d.ts.map +0 -1
- package/dist/benchmark/memory/utils.js +0 -2
- package/dist/benchmark/memory/utils.js.map +0 -1
- package/dist/benchmark/replication-network.d.ts +0 -2
- package/dist/benchmark/replication-network.d.ts.map +0 -1
- package/dist/benchmark/replication-network.js +0 -872
- package/dist/benchmark/replication-network.js.map +0 -1
- package/dist/benchmark/replication.d.ts +0 -2
- package/dist/benchmark/replication.d.ts.map +0 -1
- package/dist/benchmark/replication.js +0 -207
- package/dist/benchmark/replication.js.map +0 -1
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
import { yamux } from "@chainsafe/libp2p-yamux";
|
|
36
|
-
import { field, option, variant } from "@dao-xyz/borsh";
|
|
37
|
-
import { tcp } from "@libp2p/tcp";
|
|
38
|
-
import { SearchRequest } from "@peerbit/document-interface";
|
|
39
|
-
import { Sort } from "@peerbit/indexer-interface";
|
|
40
|
-
import { Program } from "@peerbit/program";
|
|
41
|
-
import { Peerbit, createLibp2pExtended } from "peerbit";
|
|
42
|
-
import * as B from "tinybench";
|
|
43
|
-
import { v4 as uuid } from "uuid";
|
|
44
|
-
import { Documents } from "../src/program.js";
|
|
45
|
-
// Run with "node --loader ts-node/esm ./benchmark/iterate-replicate.ts"
|
|
46
|
-
let Document = (() => {
|
|
47
|
-
let _classDecorators = [variant("document")];
|
|
48
|
-
let _classDescriptor;
|
|
49
|
-
let _classExtraInitializers = [];
|
|
50
|
-
let _classThis;
|
|
51
|
-
let _id_decorators;
|
|
52
|
-
let _id_initializers = [];
|
|
53
|
-
let _id_extraInitializers = [];
|
|
54
|
-
let _name_decorators;
|
|
55
|
-
let _name_initializers = [];
|
|
56
|
-
let _name_extraInitializers = [];
|
|
57
|
-
let _number_decorators;
|
|
58
|
-
let _number_initializers = [];
|
|
59
|
-
let _number_extraInitializers = [];
|
|
60
|
-
var Document = class {
|
|
61
|
-
static { _classThis = this; }
|
|
62
|
-
static {
|
|
63
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
64
|
-
_id_decorators = [field({ type: "string" })];
|
|
65
|
-
_name_decorators = [field({ type: option("string") })];
|
|
66
|
-
_number_decorators = [field({ type: option("u64") })];
|
|
67
|
-
__esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
68
|
-
__esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
69
|
-
__esDecorate(null, null, _number_decorators, { kind: "field", name: "number", static: false, private: false, access: { has: obj => "number" in obj, get: obj => obj.number, set: (obj, value) => { obj.number = value; } }, metadata: _metadata }, _number_initializers, _number_extraInitializers);
|
|
70
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
71
|
-
Document = _classThis = _classDescriptor.value;
|
|
72
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
73
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
74
|
-
}
|
|
75
|
-
id = __runInitializers(this, _id_initializers, void 0);
|
|
76
|
-
name = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _name_initializers, void 0));
|
|
77
|
-
number = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _number_initializers, void 0));
|
|
78
|
-
constructor(opts) {
|
|
79
|
-
__runInitializers(this, _number_extraInitializers);
|
|
80
|
-
if (opts) {
|
|
81
|
-
this.id = opts.id;
|
|
82
|
-
this.name = opts.name;
|
|
83
|
-
this.number = opts.number;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
return Document = _classThis;
|
|
88
|
-
})();
|
|
89
|
-
let TestStore = (() => {
|
|
90
|
-
let _classDecorators = [variant("test_documents")];
|
|
91
|
-
let _classDescriptor;
|
|
92
|
-
let _classExtraInitializers = [];
|
|
93
|
-
let _classThis;
|
|
94
|
-
let _classSuper = Program;
|
|
95
|
-
let _docs_decorators;
|
|
96
|
-
let _docs_initializers = [];
|
|
97
|
-
let _docs_extraInitializers = [];
|
|
98
|
-
var TestStore = class extends _classSuper {
|
|
99
|
-
static { _classThis = this; }
|
|
100
|
-
static {
|
|
101
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
102
|
-
_docs_decorators = [field({ type: Documents })];
|
|
103
|
-
__esDecorate(null, null, _docs_decorators, { kind: "field", name: "docs", static: false, private: false, access: { has: obj => "docs" in obj, get: obj => obj.docs, set: (obj, value) => { obj.docs = value; } }, metadata: _metadata }, _docs_initializers, _docs_extraInitializers);
|
|
104
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
105
|
-
TestStore = _classThis = _classDescriptor.value;
|
|
106
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
107
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
108
|
-
}
|
|
109
|
-
docs = __runInitializers(this, _docs_initializers, void 0);
|
|
110
|
-
constructor() {
|
|
111
|
-
super();
|
|
112
|
-
__runInitializers(this, _docs_extraInitializers);
|
|
113
|
-
this.docs = new Documents();
|
|
114
|
-
}
|
|
115
|
-
async open(options) {
|
|
116
|
-
await this.docs.open({ ...options, type: Document });
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
return TestStore = _classThis;
|
|
120
|
-
})();
|
|
121
|
-
const peers = await Promise.all([
|
|
122
|
-
await createLibp2pExtended({
|
|
123
|
-
transports: [tcp()],
|
|
124
|
-
streamMuxers: [yamux()],
|
|
125
|
-
}),
|
|
126
|
-
await createLibp2pExtended({
|
|
127
|
-
connectionManager: {},
|
|
128
|
-
transports: [tcp()],
|
|
129
|
-
streamMuxers: [yamux()],
|
|
130
|
-
}),
|
|
131
|
-
].map((x) => Peerbit.create({ libp2p: x })));
|
|
132
|
-
await peers[0].dial(peers[1].getMultiaddrs());
|
|
133
|
-
const host = await peers[0].open(new TestStore(), {
|
|
134
|
-
args: {
|
|
135
|
-
replicate: {
|
|
136
|
-
factor: 1,
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
const createDoc = (number) => {
|
|
141
|
-
return new Document({
|
|
142
|
-
id: uuid(),
|
|
143
|
-
name: uuid(),
|
|
144
|
-
number,
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
// warmup
|
|
148
|
-
console.log("Inserting");
|
|
149
|
-
const insertionCount = 1e4;
|
|
150
|
-
for (let i = 0; i < insertionCount; i++) {
|
|
151
|
-
if (i % 1e3 === 0 && i > 0) {
|
|
152
|
-
console.log("... " + i + " ...");
|
|
153
|
-
}
|
|
154
|
-
await host.docs.put(createDoc(BigInt(i)), { unique: true });
|
|
155
|
-
}
|
|
156
|
-
console.log("Inserted: " + insertionCount);
|
|
157
|
-
const client = await peers[1].open(host.clone(), {
|
|
158
|
-
args: {
|
|
159
|
-
replicate: false,
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
await client.docs.log.waitForReplicator(host.node.identity.publicKey);
|
|
163
|
-
let iterator = undefined;
|
|
164
|
-
const suite = new B.Bench();
|
|
165
|
-
let iterateBatchSize = 10;
|
|
166
|
-
suite.add("iterate", async () => {
|
|
167
|
-
// wait for reading
|
|
168
|
-
const batch = await iterator.next(iterateBatchSize);
|
|
169
|
-
if (batch.length !== 10 && iterator.done() !== true) {
|
|
170
|
-
throw new Error("Missing results");
|
|
171
|
-
}
|
|
172
|
-
if (iterator.done() === true) {
|
|
173
|
-
iterator = client.docs.index.iterate(new SearchRequest({ sort: new Sort({ key: "number" }) }));
|
|
174
|
-
}
|
|
175
|
-
}, {
|
|
176
|
-
beforeAll: () => {
|
|
177
|
-
iterator = client.docs.index.iterate(new SearchRequest({ sort: new Sort({ key: "number" }) }));
|
|
178
|
-
},
|
|
179
|
-
afterAll: () => {
|
|
180
|
-
return iterator?.close();
|
|
181
|
-
},
|
|
182
|
-
});
|
|
183
|
-
suite.add("iterate-replicate", async () => {
|
|
184
|
-
// wait for reading
|
|
185
|
-
const batch = await iterator.next(iterateBatchSize);
|
|
186
|
-
if (batch.length !== 10 && iterator.done() !== true) {
|
|
187
|
-
throw new Error("Missing results");
|
|
188
|
-
}
|
|
189
|
-
if (iterator.done() === true) {
|
|
190
|
-
iterator = client.docs.index.iterate(new SearchRequest({ sort: new Sort({ key: "number" }) }), { remote: { replicate: true } });
|
|
191
|
-
}
|
|
192
|
-
}, {
|
|
193
|
-
beforeAll: () => {
|
|
194
|
-
// TODO this will have side effects on other tests
|
|
195
|
-
iterator = client.docs.index.iterate(new SearchRequest({ sort: new Sort({ key: "number" }) }), { remote: { replicate: true } });
|
|
196
|
-
},
|
|
197
|
-
afterAll: async () => {
|
|
198
|
-
const numberOfSegments = (await client.docs.log.getMyReplicationSegments()).length;
|
|
199
|
-
if (numberOfSegments === 0) {
|
|
200
|
-
throw new Error("Missing ranges");
|
|
201
|
-
}
|
|
202
|
-
console.log("Number of segmesnts after replication: " + numberOfSegments);
|
|
203
|
-
return iterator?.close();
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
await suite.run();
|
|
207
|
-
console.table(suite.table());
|
|
208
|
-
await client.close();
|
|
209
|
-
await host.close();
|
|
210
|
-
await Promise.all(peers.map((x) => x.stop()));
|
|
211
|
-
await Promise.all(peers.map((x) => x.libp2p.stop()));
|
|
212
|
-
//# sourceMappingURL=iterate-replicate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iterate-replicate.js","sourceRoot":"","sources":["../../benchmark/iterate-replicate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"child.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/child.ts"],"names":[],"mappings":""}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
// this benchmark will test how much memory is used to store 1m documents
|
|
36
|
-
import { field, option, variant } from "@dao-xyz/borsh";
|
|
37
|
-
import { Program } from "@peerbit/program";
|
|
38
|
-
import { TestSession } from "@peerbit/test-utils";
|
|
39
|
-
import crypto from "crypto";
|
|
40
|
-
import path from "path";
|
|
41
|
-
import { v4 as uuid } from "uuid";
|
|
42
|
-
import { Documents } from "../../src/program.js";
|
|
43
|
-
// Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
|
|
44
|
-
// handle io from process and parent
|
|
45
|
-
let Document = (() => {
|
|
46
|
-
let _classDecorators = [variant("document")];
|
|
47
|
-
let _classDescriptor;
|
|
48
|
-
let _classExtraInitializers = [];
|
|
49
|
-
let _classThis;
|
|
50
|
-
let _id_decorators;
|
|
51
|
-
let _id_initializers = [];
|
|
52
|
-
let _id_extraInitializers = [];
|
|
53
|
-
let _name_decorators;
|
|
54
|
-
let _name_initializers = [];
|
|
55
|
-
let _name_extraInitializers = [];
|
|
56
|
-
let _number_decorators;
|
|
57
|
-
let _number_initializers = [];
|
|
58
|
-
let _number_extraInitializers = [];
|
|
59
|
-
let _bytes_decorators;
|
|
60
|
-
let _bytes_initializers = [];
|
|
61
|
-
let _bytes_extraInitializers = [];
|
|
62
|
-
var Document = class {
|
|
63
|
-
static { _classThis = this; }
|
|
64
|
-
static {
|
|
65
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
66
|
-
_id_decorators = [field({ type: "string" })];
|
|
67
|
-
_name_decorators = [field({ type: option("string") })];
|
|
68
|
-
_number_decorators = [field({ type: option("u64") })];
|
|
69
|
-
_bytes_decorators = [field({ type: Uint8Array })];
|
|
70
|
-
__esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
71
|
-
__esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
72
|
-
__esDecorate(null, null, _number_decorators, { kind: "field", name: "number", static: false, private: false, access: { has: obj => "number" in obj, get: obj => obj.number, set: (obj, value) => { obj.number = value; } }, metadata: _metadata }, _number_initializers, _number_extraInitializers);
|
|
73
|
-
__esDecorate(null, null, _bytes_decorators, { kind: "field", name: "bytes", static: false, private: false, access: { has: obj => "bytes" in obj, get: obj => obj.bytes, set: (obj, value) => { obj.bytes = value; } }, metadata: _metadata }, _bytes_initializers, _bytes_extraInitializers);
|
|
74
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
75
|
-
Document = _classThis = _classDescriptor.value;
|
|
76
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
77
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
78
|
-
}
|
|
79
|
-
id = __runInitializers(this, _id_initializers, void 0);
|
|
80
|
-
name = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _name_initializers, void 0));
|
|
81
|
-
number = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _number_initializers, void 0));
|
|
82
|
-
bytes = (__runInitializers(this, _number_extraInitializers), __runInitializers(this, _bytes_initializers, void 0));
|
|
83
|
-
constructor(opts) {
|
|
84
|
-
__runInitializers(this, _bytes_extraInitializers);
|
|
85
|
-
if (opts) {
|
|
86
|
-
this.id = opts.id;
|
|
87
|
-
this.name = opts.name;
|
|
88
|
-
this.number = opts.number;
|
|
89
|
-
this.bytes = opts.bytes;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return Document = _classThis;
|
|
94
|
-
})();
|
|
95
|
-
let TestStore = (() => {
|
|
96
|
-
let _classDecorators = [variant("test_documents")];
|
|
97
|
-
let _classDescriptor;
|
|
98
|
-
let _classExtraInitializers = [];
|
|
99
|
-
let _classThis;
|
|
100
|
-
let _classSuper = Program;
|
|
101
|
-
let _docs_decorators;
|
|
102
|
-
let _docs_initializers = [];
|
|
103
|
-
let _docs_extraInitializers = [];
|
|
104
|
-
var TestStore = class extends _classSuper {
|
|
105
|
-
static { _classThis = this; }
|
|
106
|
-
static {
|
|
107
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
108
|
-
_docs_decorators = [field({ type: Documents })];
|
|
109
|
-
__esDecorate(null, null, _docs_decorators, { kind: "field", name: "docs", static: false, private: false, access: { has: obj => "docs" in obj, get: obj => obj.docs, set: (obj, value) => { obj.docs = value; } }, metadata: _metadata }, _docs_initializers, _docs_extraInitializers);
|
|
110
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
111
|
-
TestStore = _classThis = _classDescriptor.value;
|
|
112
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
113
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
114
|
-
}
|
|
115
|
-
docs = __runInitializers(this, _docs_initializers, void 0);
|
|
116
|
-
constructor(properties) {
|
|
117
|
-
super();
|
|
118
|
-
__runInitializers(this, _docs_extraInitializers);
|
|
119
|
-
if (properties) {
|
|
120
|
-
this.docs = properties.docs;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
async open(options) {
|
|
124
|
-
await this.docs.open({ ...options, type: Document });
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
return TestStore = _classThis;
|
|
128
|
-
})();
|
|
129
|
-
const peersCount = 1;
|
|
130
|
-
const sendReady = () => process.send(JSON.stringify({ type: "ready" }));
|
|
131
|
-
let session;
|
|
132
|
-
try {
|
|
133
|
-
let store = undefined;
|
|
134
|
-
process.on("message", async (message) => {
|
|
135
|
-
if (message.type === "init") {
|
|
136
|
-
session = await TestSession.connected(peersCount, {
|
|
137
|
-
directory: message.storage === "in-memory"
|
|
138
|
-
? undefined
|
|
139
|
-
: path.join("./tmp", uuid()),
|
|
140
|
-
});
|
|
141
|
-
store = new TestStore({
|
|
142
|
-
docs: new Documents(),
|
|
143
|
-
});
|
|
144
|
-
const client = session.peers[0];
|
|
145
|
-
await client.open(store, {
|
|
146
|
-
args: {
|
|
147
|
-
replicate: {
|
|
148
|
-
factor: 1,
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else if (message.type === "insert") {
|
|
154
|
-
for (let i = 0; i < message.docs; i++) {
|
|
155
|
-
const doc = new Document({
|
|
156
|
-
id: uuid(),
|
|
157
|
-
name: "hello",
|
|
158
|
-
number: 1n,
|
|
159
|
-
bytes: crypto.randomBytes(message.size ?? 1024),
|
|
160
|
-
});
|
|
161
|
-
await store.docs.put(doc, { unique: true });
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else if (message.type === "done") {
|
|
165
|
-
process.exit(0);
|
|
166
|
-
}
|
|
167
|
-
sendReady();
|
|
168
|
-
});
|
|
169
|
-
sendReady();
|
|
170
|
-
// suspend the process until we receive a 'done' from parent
|
|
171
|
-
await new Promise((resolve) => {
|
|
172
|
-
let listener = (message) => {
|
|
173
|
-
if (message.type === "done") {
|
|
174
|
-
process.off("message", listener);
|
|
175
|
-
resolve();
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
process.on("message", listener);
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
throw new Error("Failed to insert: " + error?.message);
|
|
183
|
-
}
|
|
184
|
-
finally {
|
|
185
|
-
await session.stop();
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=child.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../../benchmark/memory/child.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
// Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
|
|
2
|
-
// run child.ts with ts-node in a subprocess so we can measure memory consumption
|
|
3
|
-
import { printMemoryUsage } from "@peerbit/test-utils/log-utils.js";
|
|
4
|
-
import { fork } from "child_process";
|
|
5
|
-
import { dirname, resolve } from "path";
|
|
6
|
-
import pidusage from "pidusage";
|
|
7
|
-
import { fileURLToPath } from "url";
|
|
8
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const child = fork(resolve(__dirname, "child.ts"), [], {
|
|
10
|
-
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
11
|
-
});
|
|
12
|
-
const ramMemoryUsage = () => {
|
|
13
|
-
return new Promise((resolve) => {
|
|
14
|
-
pidusage(child.pid, (err, stats) => {
|
|
15
|
-
if (err) {
|
|
16
|
-
console.error(err);
|
|
17
|
-
resolve(0);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
resolve(stats.memory);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
child.stdout.on("data", (data) => {
|
|
26
|
-
// log without newline
|
|
27
|
-
process.stdout.write(data.toString());
|
|
28
|
-
});
|
|
29
|
-
child.stderr.on("data", (data) => {
|
|
30
|
-
// log without newline
|
|
31
|
-
process.stderr.write(data.toString());
|
|
32
|
-
});
|
|
33
|
-
child.on("close", (code) => {
|
|
34
|
-
console.log(`child process exited with code ${code}`);
|
|
35
|
-
});
|
|
36
|
-
// wait for the child process to exit
|
|
37
|
-
child.on("exit", (code) => {
|
|
38
|
-
process.exit(code);
|
|
39
|
-
});
|
|
40
|
-
// wait for child to be ready
|
|
41
|
-
const waitForReady = () => {
|
|
42
|
-
return new Promise((resolve) => {
|
|
43
|
-
let listener = (data) => {
|
|
44
|
-
try {
|
|
45
|
-
const message = JSON.parse(data.toString());
|
|
46
|
-
if (message.type === "ready") {
|
|
47
|
-
child.off("message", listener);
|
|
48
|
-
resolve();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (error) { }
|
|
52
|
-
};
|
|
53
|
-
child.on("message", listener);
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
|
-
await waitForReady();
|
|
57
|
-
child.send({ type: "init", storage: "disc" });
|
|
58
|
-
await waitForReady();
|
|
59
|
-
// insert docs into the store by sending a message to the child
|
|
60
|
-
const send = (message) => {
|
|
61
|
-
child.send(message);
|
|
62
|
-
};
|
|
63
|
-
// send the insert message
|
|
64
|
-
let inserts = 150;
|
|
65
|
-
let insertBatchSize = 10;
|
|
66
|
-
let memoryUsages = [];
|
|
67
|
-
let size = 1e6;
|
|
68
|
-
console.log("Inserting batches of", insertBatchSize, "documents", inserts, "times", "with", size / 1e6, "MB size");
|
|
69
|
-
for (let i = 0; i < inserts; i++) {
|
|
70
|
-
// log a progress bar that is updating without printing newline
|
|
71
|
-
process.stdout.write(`\r${i}/${inserts}`);
|
|
72
|
-
send({ type: "insert", docs: insertBatchSize, size });
|
|
73
|
-
await waitForReady();
|
|
74
|
-
let memory = await ramMemoryUsage();
|
|
75
|
-
memoryUsages.push(memory);
|
|
76
|
-
}
|
|
77
|
-
printMemoryUsage(memoryUsages.map((x, i) => {
|
|
78
|
-
return { value: x, progress: insertBatchSize * (i + 1) };
|
|
79
|
-
}), "# of inserts");
|
|
80
|
-
child.kill();
|
|
81
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replication-network.d.ts","sourceRoot":"","sources":["../../benchmark/replication-network.ts"],"names":[],"mappings":""}
|