@peerbit/shared-log 13.2.23 → 13.2.25
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/dist/src/checked-prune.d.ts +12 -0
- package/dist/src/checked-prune.d.ts.map +1 -1
- package/dist/src/checked-prune.js +33 -0
- package/dist/src/checked-prune.js.map +1 -1
- package/dist/src/coordinate-persistence.d.ts +211 -0
- package/dist/src/coordinate-persistence.d.ts.map +1 -0
- package/dist/src/coordinate-persistence.js +1133 -0
- package/dist/src/coordinate-persistence.js.map +1 -0
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +19 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +139 -133
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1491 -4265
- package/dist/src/index.js.map +1 -1
- package/dist/src/instance-lifecycle.d.ts +117 -0
- package/dist/src/instance-lifecycle.d.ts.map +1 -0
- package/dist/src/instance-lifecycle.js +254 -0
- package/dist/src/instance-lifecycle.js.map +1 -0
- package/dist/src/join-warmup.d.ts +86 -0
- package/dist/src/join-warmup.d.ts.map +1 -0
- package/dist/src/join-warmup.js +351 -0
- package/dist/src/join-warmup.js.map +1 -0
- package/dist/src/leader-plan-cache.d.ts +33 -0
- package/dist/src/leader-plan-cache.d.ts.map +1 -0
- package/dist/src/leader-plan-cache.js +49 -0
- package/dist/src/leader-plan-cache.js.map +1 -0
- package/dist/src/native-write-through-block-store.d.ts +123 -0
- package/dist/src/native-write-through-block-store.d.ts.map +1 -0
- package/dist/src/native-write-through-block-store.js +989 -0
- package/dist/src/native-write-through-block-store.js.map +1 -0
- package/dist/src/peer-session.d.ts +117 -0
- package/dist/src/peer-session.d.ts.map +1 -0
- package/dist/src/peer-session.js +259 -0
- package/dist/src/peer-session.js.map +1 -0
- package/dist/src/ranges.d.ts +2 -2
- package/dist/src/ranges.d.ts.map +1 -1
- package/dist/src/ranges.js +10 -8
- package/dist/src/ranges.js.map +1 -1
- package/dist/src/replication-announcement.d.ts +116 -0
- package/dist/src/replication-announcement.d.ts.map +1 -0
- package/dist/src/replication-announcement.js +515 -0
- package/dist/src/replication-announcement.js.map +1 -0
- package/dist/src/replicator-liveness.d.ts +59 -0
- package/dist/src/replicator-liveness.d.ts.map +1 -0
- package/dist/src/replicator-liveness.js +304 -0
- package/dist/src/replicator-liveness.js.map +1 -0
- package/dist/src/sync/dispatch-lifecycle.d.ts +48 -0
- package/dist/src/sync/dispatch-lifecycle.d.ts.map +1 -0
- package/dist/src/sync/dispatch-lifecycle.js +141 -0
- package/dist/src/sync/dispatch-lifecycle.js.map +1 -0
- package/dist/src/sync/factory.d.ts +29 -0
- package/dist/src/sync/factory.d.ts.map +1 -0
- package/dist/src/sync/factory.js +87 -0
- package/dist/src/sync/factory.js.map +1 -0
- package/dist/src/sync/pending-sync-store.d.ts +105 -0
- package/dist/src/sync/pending-sync-store.d.ts.map +1 -0
- package/dist/src/sync/pending-sync-store.js +877 -0
- package/dist/src/sync/pending-sync-store.js.map +1 -0
- package/dist/src/sync/rateless-iblt.d.ts +4 -1
- package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.js +102 -106
- package/dist/src/sync/rateless-iblt.js.map +1 -1
- package/dist/src/sync/simple.d.ts +10 -41
- package/dist/src/sync/simple.d.ts.map +1 -1
- package/dist/src/sync/simple.js +259 -952
- package/dist/src/sync/simple.js.map +1 -1
- package/dist/src/sync/sync-peer-state.d.ts +16 -0
- package/dist/src/sync/sync-peer-state.d.ts.map +1 -0
- package/dist/src/sync/sync-peer-state.js +82 -0
- package/dist/src/sync/sync-peer-state.js.map +1 -0
- package/package.json +22 -21
- package/src/checked-prune.ts +35 -0
- package/src/coordinate-persistence.ts +1796 -0
- package/src/errors.ts +21 -0
- package/src/index.ts +6367 -10052
- package/src/instance-lifecycle.ts +351 -0
- package/src/join-warmup.ts +507 -0
- package/src/leader-plan-cache.ts +61 -0
- package/src/native-write-through-block-store.ts +1170 -0
- package/src/peer-session.ts +336 -0
- package/src/ranges.ts +22 -16
- package/src/replication-announcement.ts +744 -0
- package/src/replicator-liveness.ts +439 -0
- package/src/sync/dispatch-lifecycle.ts +230 -0
- package/src/sync/factory.ts +154 -0
- package/src/sync/pending-sync-store.ts +1085 -0
- package/src/sync/rateless-iblt.ts +122 -132
- package/src/sync/simple.ts +334 -1144
- package/src/sync/sync-peer-state.ts +107 -0
- package/dist/benchmark/adaptive-ingest.d.ts +0 -2
- package/dist/benchmark/adaptive-ingest.d.ts.map +0 -1
- package/dist/benchmark/adaptive-ingest.js +0 -275
- package/dist/benchmark/adaptive-ingest.js.map +0 -1
- package/dist/benchmark/get-samples.d.ts +0 -2
- package/dist/benchmark/get-samples.d.ts.map +0 -1
- package/dist/benchmark/get-samples.js +0 -194
- package/dist/benchmark/get-samples.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 -224
- package/dist/benchmark/index.js.map +0 -1
- package/dist/benchmark/join-backfill-repair.d.ts +0 -2
- package/dist/benchmark/join-backfill-repair.d.ts.map +0 -1
- package/dist/benchmark/join-backfill-repair.js +0 -288
- package/dist/benchmark/join-backfill-repair.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 -204
- 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/native-graph.d.ts +0 -2
- package/dist/benchmark/native-graph.d.ts.map +0 -1
- package/dist/benchmark/native-graph.js +0 -359
- package/dist/benchmark/native-graph.js.map +0 -1
- package/dist/benchmark/network-preset-e2e.d.ts +0 -2
- package/dist/benchmark/network-preset-e2e.d.ts.map +0 -1
- package/dist/benchmark/network-preset-e2e.js +0 -497
- package/dist/benchmark/network-preset-e2e.js.map +0 -1
- package/dist/benchmark/partial-sync.d.ts +0 -3
- package/dist/benchmark/partial-sync.d.ts.map +0 -1
- package/dist/benchmark/partial-sync.js +0 -121
- package/dist/benchmark/partial-sync.js.map +0 -1
- package/dist/benchmark/pid-convergence.d.ts +0 -2
- package/dist/benchmark/pid-convergence.d.ts.map +0 -1
- package/dist/benchmark/pid-convergence.js +0 -138
- package/dist/benchmark/pid-convergence.js.map +0 -1
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts +0 -2
- package/dist/benchmark/rateless-iblt-sender-startsync.d.ts.map +0 -1
- package/dist/benchmark/rateless-iblt-sender-startsync.js +0 -104
- package/dist/benchmark/rateless-iblt-sender-startsync.js.map +0 -1
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts +0 -2
- package/dist/benchmark/rateless-iblt-startsync-cache.d.ts.map +0 -1
- package/dist/benchmark/rateless-iblt-startsync-cache.js +0 -112
- package/dist/benchmark/rateless-iblt-startsync-cache.js.map +0 -1
- package/dist/benchmark/receive-prune.d.ts +0 -2
- package/dist/benchmark/receive-prune.d.ts.map +0 -1
- package/dist/benchmark/receive-prune.js +0 -818
- package/dist/benchmark/receive-prune.js.map +0 -1
- package/dist/benchmark/replication-prune.d.ts +0 -2
- package/dist/benchmark/replication-prune.d.ts.map +0 -1
- package/dist/benchmark/replication-prune.js +0 -105
- package/dist/benchmark/replication-prune.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 -88
- package/dist/benchmark/replication.js.map +0 -1
- package/dist/benchmark/sync-batch-sweep.d.ts +0 -2
- package/dist/benchmark/sync-batch-sweep.d.ts.map +0 -1
- package/dist/benchmark/sync-batch-sweep.js +0 -353
- package/dist/benchmark/sync-batch-sweep.js.map +0 -1
- package/dist/benchmark/sync-catchup.d.ts +0 -2
- package/dist/benchmark/sync-catchup.d.ts.map +0 -1
- package/dist/benchmark/sync-catchup.js +0 -277
- package/dist/benchmark/sync-catchup.js.map +0 -1
- package/dist/benchmark/sync-phase-profile.d.ts +0 -2
- package/dist/benchmark/sync-phase-profile.d.ts.map +0 -1
- package/dist/benchmark/sync-phase-profile.js +0 -303
- package/dist/benchmark/sync-phase-profile.js.map +0 -1
- package/dist/benchmark/to-rebalance.d.ts +0 -2
- package/dist/benchmark/to-rebalance.d.ts.map +0 -1
- package/dist/benchmark/to-rebalance.js +0 -117
- package/dist/benchmark/to-rebalance.js.map +0 -1
- package/dist/benchmark/utils.d.ts +0 -24
- package/dist/benchmark/utils.d.ts.map +0 -1
- package/dist/benchmark/utils.js +0 -47
- package/dist/benchmark/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pid-convergence.d.ts","sourceRoot":"","sources":["../../benchmark/pid-convergence.ts"],"names":[],"mappings":""}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { Bench } from "tinybench";
|
|
2
|
-
import { PIDReplicationController } from "../src/pid.js";
|
|
3
|
-
// Benchmarks PID convergence speed in a simplified simulation model.
|
|
4
|
-
//
|
|
5
|
-
// Run with:
|
|
6
|
-
// cd packages/programs/data/shared-log
|
|
7
|
-
// PID_WARMUP=2 PID_ITERATIONS=50 PID_RUNS=200 node --loader ts-node/esm ./benchmark/pid-convergence.ts
|
|
8
|
-
//
|
|
9
|
-
// Notes:
|
|
10
|
-
// - This is a *model* benchmark: it does not simulate network, pruning, or real memory measurements.
|
|
11
|
-
// - It is intended to catch regressions/improvements in the controller dynamics and step cost.
|
|
12
|
-
const parseNumberList = (value, defaults) => {
|
|
13
|
-
if (!value)
|
|
14
|
-
return defaults;
|
|
15
|
-
const parsed = value
|
|
16
|
-
.split(",")
|
|
17
|
-
.map((x) => Number.parseInt(x.trim(), 10))
|
|
18
|
-
.filter((x) => Number.isFinite(x) && x > 0);
|
|
19
|
-
return parsed.length > 0 ? parsed : defaults;
|
|
20
|
-
};
|
|
21
|
-
const warmupIterations = Number.parseInt(process.env.PID_WARMUP || "2", 10);
|
|
22
|
-
const iterations = Number.parseInt(process.env.PID_ITERATIONS || "50", 10);
|
|
23
|
-
const runsPerTask = Number.parseInt(process.env.PID_RUNS || "200", 10);
|
|
24
|
-
const maxSteps = Number.parseInt(process.env.PID_MAX_STEPS || "200", 10);
|
|
25
|
-
const peersList = parseNumberList(process.env.PID_PEERS, [2, 3, 5]);
|
|
26
|
-
const clamp01 = (value) => Math.max(0, Math.min(1, value));
|
|
27
|
-
const simulateConvergence = (properties) => {
|
|
28
|
-
const { controllers, initialFactors, cpuUsage, memoryUsage, expectedFactor, epsilon, } = properties;
|
|
29
|
-
for (const controller of controllers) {
|
|
30
|
-
controller.reset();
|
|
31
|
-
}
|
|
32
|
-
let factors = initialFactors.slice();
|
|
33
|
-
const peerCount = factors.length;
|
|
34
|
-
for (let step = 0; step < maxSteps; step++) {
|
|
35
|
-
const totalFactor = clamp01(factors.reduce((acc, f) => acc + f, 0));
|
|
36
|
-
const next = [];
|
|
37
|
-
for (let peerIndex = 0; peerIndex < peerCount; peerIndex++) {
|
|
38
|
-
next[peerIndex] = controllers[peerIndex].step({
|
|
39
|
-
memoryUsage: memoryUsage(peerIndex, factors[peerIndex]),
|
|
40
|
-
currentFactor: factors[peerIndex],
|
|
41
|
-
totalFactor,
|
|
42
|
-
peerCount,
|
|
43
|
-
cpuUsage: cpuUsage(peerIndex),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
factors = next;
|
|
47
|
-
let ok = true;
|
|
48
|
-
for (let peerIndex = 0; peerIndex < peerCount; peerIndex++) {
|
|
49
|
-
const target = expectedFactor(peerIndex, peerCount);
|
|
50
|
-
if (Math.abs(factors[peerIndex] - target) > epsilon) {
|
|
51
|
-
ok = false;
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (ok && Math.abs(factors.reduce((acc, f) => acc + f, 0) - 1) <= epsilon) {
|
|
56
|
-
return { converged: true, steps: step + 1 };
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return { converged: false, steps: maxSteps };
|
|
60
|
-
};
|
|
61
|
-
const suite = new Bench({
|
|
62
|
-
name: "pid-convergence",
|
|
63
|
-
warmupIterations: Number.isFinite(warmupIterations) ? warmupIterations : 0,
|
|
64
|
-
iterations: Number.isFinite(iterations) ? iterations : undefined,
|
|
65
|
-
});
|
|
66
|
-
const makeControllers = (peerCount, options) => Array.from({ length: peerCount }, (_, i) => new PIDReplicationController(`p${i}`, options(i)));
|
|
67
|
-
for (const peerCount of peersList) {
|
|
68
|
-
const controllers = makeControllers(peerCount, () => ({}));
|
|
69
|
-
const epsilon = 0.02;
|
|
70
|
-
const target = (_i, n) => 1 / n;
|
|
71
|
-
const initialFactors = Array.from({ length: peerCount }, () => 0);
|
|
72
|
-
suite.add(`even (peers=${peerCount})`, () => {
|
|
73
|
-
for (let i = 0; i < runsPerTask; i++) {
|
|
74
|
-
const res = simulateConvergence({
|
|
75
|
-
controllers,
|
|
76
|
-
initialFactors,
|
|
77
|
-
cpuUsage: () => 0,
|
|
78
|
-
memoryUsage: () => 0,
|
|
79
|
-
expectedFactor: target,
|
|
80
|
-
epsilon,
|
|
81
|
-
});
|
|
82
|
-
if (!res.converged) {
|
|
83
|
-
throw new Error(`did not converge (peers=${peerCount})`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
// A constrained scenario (2 peers): peer 0 has a memory cap (ratio), peer 1 is unconstrained.
|
|
89
|
-
{
|
|
90
|
-
const peerCount = 2;
|
|
91
|
-
const totalSize = 1_000_000; // bytes
|
|
92
|
-
const memoryLimit = 250_000; // 25% of total
|
|
93
|
-
const limitRatio = memoryLimit / totalSize;
|
|
94
|
-
const epsilon = 0.03;
|
|
95
|
-
const controllers = makeControllers(peerCount, (peerIndex) => peerIndex === 0 ? { storage: { max: memoryLimit } } : {});
|
|
96
|
-
const initialFactors = [0.5, 0.5];
|
|
97
|
-
const expectedFactor = (peerIndex) => peerIndex === 0 ? limitRatio : 1 - limitRatio;
|
|
98
|
-
suite.add("memory-limited (2 peers, 25% cap)", () => {
|
|
99
|
-
for (let i = 0; i < runsPerTask; i++) {
|
|
100
|
-
const res = simulateConvergence({
|
|
101
|
-
controllers,
|
|
102
|
-
initialFactors,
|
|
103
|
-
cpuUsage: () => 0,
|
|
104
|
-
memoryUsage: (peerIndex, factor) => peerIndex === 0 ? totalSize * factor : 0,
|
|
105
|
-
expectedFactor,
|
|
106
|
-
epsilon,
|
|
107
|
-
});
|
|
108
|
-
if (!res.converged) {
|
|
109
|
-
throw new Error("did not converge (memory-limited)");
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
await suite.run();
|
|
115
|
-
if (process.env.BENCH_JSON === "1") {
|
|
116
|
-
const tasks = suite.tasks.map((task) => ({
|
|
117
|
-
name: task.name,
|
|
118
|
-
hz: task.result?.hz ?? null,
|
|
119
|
-
mean_ms: task.result?.mean ?? null,
|
|
120
|
-
rme: task.result?.rme ?? null,
|
|
121
|
-
samples: task.result?.samples?.length ?? null,
|
|
122
|
-
}));
|
|
123
|
-
process.stdout.write(JSON.stringify({
|
|
124
|
-
name: suite.name,
|
|
125
|
-
tasks,
|
|
126
|
-
meta: {
|
|
127
|
-
peersList,
|
|
128
|
-
warmupIterations,
|
|
129
|
-
iterations,
|
|
130
|
-
runsPerTask,
|
|
131
|
-
maxSteps,
|
|
132
|
-
},
|
|
133
|
-
}, null, 2));
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
console.table(suite.table());
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=pid-convergence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pid-convergence.js","sourceRoot":"","sources":["../../benchmark/pid-convergence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rateless-iblt-sender-startsync.d.ts","sourceRoot":"","sources":["../../benchmark/rateless-iblt-sender-startsync.ts"],"names":[],"mappings":""}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Cache } from "@peerbit/cache";
|
|
2
|
-
import { ready as ribltReady } from "@peerbit/riblt";
|
|
3
|
-
import { Bench } from "tinybench";
|
|
4
|
-
import { createNumbers } from "../src/integers.js";
|
|
5
|
-
import { RatelessIBLTSynchronizer } from "../src/sync/rateless-iblt.js";
|
|
6
|
-
// Benchmarks sender-side StartSync setup cost (sort + encoder build + initial symbols),
|
|
7
|
-
// by timing `RatelessIBLTSynchronizer.onMaybeMissingEntries()` for large batches.
|
|
8
|
-
//
|
|
9
|
-
// Run with:
|
|
10
|
-
// cd packages/programs/data/shared-log
|
|
11
|
-
// RIBLT_SIZES="1000,10000,50000" RIBLT_WARMUP=5 RIBLT_ITERATIONS=20 \\
|
|
12
|
-
// node --loader ts-node/esm ./benchmark/rateless-iblt-sender-startsync.ts
|
|
13
|
-
const parseNumberList = (value, defaults) => {
|
|
14
|
-
if (!value)
|
|
15
|
-
return defaults;
|
|
16
|
-
const parsed = value
|
|
17
|
-
.split(",")
|
|
18
|
-
.map((x) => Number.parseInt(x.trim(), 10))
|
|
19
|
-
.filter((x) => Number.isFinite(x) && x > 0);
|
|
20
|
-
return parsed.length > 0 ? parsed : defaults;
|
|
21
|
-
};
|
|
22
|
-
const sizes = parseNumberList(process.env.RIBLT_SIZES, [1_000, 10_000, 50_000]);
|
|
23
|
-
const warmupIterations = Number.parseInt(process.env.RIBLT_WARMUP || "5", 10);
|
|
24
|
-
const iterations = Number.parseInt(process.env.RIBLT_ITERATIONS || "20", 10);
|
|
25
|
-
const useRandomHashes = process.env.RIBLT_RANDOM === "1";
|
|
26
|
-
const U64_MASK = (1n << 64n) - 1n;
|
|
27
|
-
const createXorShift64Star = (seed) => {
|
|
28
|
-
let x = seed & U64_MASK;
|
|
29
|
-
return () => {
|
|
30
|
-
x ^= x >> 12n;
|
|
31
|
-
x ^= (x << 25n) & U64_MASK;
|
|
32
|
-
x ^= x >> 27n;
|
|
33
|
-
return (x * 2685821657736338717n) & U64_MASK;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
const createEntries = (size) => {
|
|
37
|
-
const entries = new Map();
|
|
38
|
-
const rand = useRandomHashes
|
|
39
|
-
? createXorShift64Star(88172645463393265n ^ BigInt(size))
|
|
40
|
-
: undefined;
|
|
41
|
-
for (let i = 0; i < size; i++) {
|
|
42
|
-
const hash = `h${i}`;
|
|
43
|
-
entries.set(hash, {
|
|
44
|
-
hash,
|
|
45
|
-
hashNumber: useRandomHashes ? rand() : BigInt(i + 1),
|
|
46
|
-
assignedToRangeBoundary: false,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return entries;
|
|
50
|
-
};
|
|
51
|
-
const createSync = (numbers) => {
|
|
52
|
-
const send = async () => { };
|
|
53
|
-
const rpc = { send };
|
|
54
|
-
return new RatelessIBLTSynchronizer({
|
|
55
|
-
rpc,
|
|
56
|
-
rangeIndex: {},
|
|
57
|
-
entryIndex: {},
|
|
58
|
-
log: {},
|
|
59
|
-
coordinateToHash: new Cache({ max: 10 }),
|
|
60
|
-
numbers,
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
const clearOutgoing = async (sync) => {
|
|
64
|
-
const ids = Array.from(sync.outgoingSyncProcesses.keys());
|
|
65
|
-
for (const id of ids) {
|
|
66
|
-
sync.outgoingSyncProcesses.get(id)?.free();
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
await ribltReady;
|
|
70
|
-
const numbers = createNumbers("u64");
|
|
71
|
-
const suite = new Bench({
|
|
72
|
-
name: "rateless-iblt-sender-startsync",
|
|
73
|
-
warmupIterations: Number.isFinite(warmupIterations) ? warmupIterations : 0,
|
|
74
|
-
iterations: Number.isFinite(iterations) ? iterations : undefined,
|
|
75
|
-
});
|
|
76
|
-
const sync = createSync(numbers);
|
|
77
|
-
for (const size of sizes) {
|
|
78
|
-
const entries = createEntries(size);
|
|
79
|
-
suite.add(`onMaybeMissingEntries (rateless IBLT, n=${size})`, async () => {
|
|
80
|
-
await clearOutgoing(sync);
|
|
81
|
-
await sync.onMaybeMissingEntries({ entries, targets: ["t"] });
|
|
82
|
-
await clearOutgoing(sync);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
await suite.run();
|
|
86
|
-
if (process.env.BENCH_JSON === "1") {
|
|
87
|
-
const tasks = suite.tasks.map((task) => ({
|
|
88
|
-
name: task.name,
|
|
89
|
-
hz: task.result?.hz ?? null,
|
|
90
|
-
mean_ms: task.result?.mean ?? null,
|
|
91
|
-
rme: task.result?.rme ?? null,
|
|
92
|
-
samples: task.result?.samples?.length ?? null,
|
|
93
|
-
}));
|
|
94
|
-
process.stdout.write(JSON.stringify({
|
|
95
|
-
name: suite.name,
|
|
96
|
-
tasks,
|
|
97
|
-
meta: { sizes, warmupIterations, iterations },
|
|
98
|
-
}, null, 2));
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
console.table(suite.table());
|
|
102
|
-
}
|
|
103
|
-
await sync.close();
|
|
104
|
-
//# sourceMappingURL=rateless-iblt-sender-startsync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rateless-iblt-sender-startsync.js","sourceRoot":"","sources":["../../benchmark/rateless-iblt-sender-startsync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rateless-iblt-startsync-cache.d.ts","sourceRoot":"","sources":["../../benchmark/rateless-iblt-startsync-cache.ts"],"names":[],"mappings":""}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { Cache } from "@peerbit/cache";
|
|
2
|
-
import { ready as ribltReady } from "@peerbit/riblt";
|
|
3
|
-
import { Bench } from "tinybench";
|
|
4
|
-
import { createNumbers } from "../src/integers.js";
|
|
5
|
-
import { RatelessIBLTSynchronizer } from "../src/sync/rateless-iblt.js";
|
|
6
|
-
// Run with:
|
|
7
|
-
// cd packages/programs/data/shared-log
|
|
8
|
-
// RIBLT_SIZES="1000,10000,50000" RIBLT_WARMUP=5 RIBLT_ITERATIONS=20 \
|
|
9
|
-
// node --loader ts-node/esm ./benchmark/rateless-iblt-startsync-cache.ts
|
|
10
|
-
const parseNumberList = (value, defaults) => {
|
|
11
|
-
if (!value)
|
|
12
|
-
return defaults;
|
|
13
|
-
const parsed = value
|
|
14
|
-
.split(",")
|
|
15
|
-
.map((x) => Number.parseInt(x.trim(), 10))
|
|
16
|
-
.filter((x) => Number.isFinite(x) && x > 0);
|
|
17
|
-
return parsed.length > 0 ? parsed : defaults;
|
|
18
|
-
};
|
|
19
|
-
const sizes = parseNumberList(process.env.RIBLT_SIZES, [1_000, 10_000, 50_000]);
|
|
20
|
-
const warmupIterations = Number.parseInt(process.env.RIBLT_WARMUP || "5", 10);
|
|
21
|
-
const iterations = Number.parseInt(process.env.RIBLT_ITERATIONS || "20", 10);
|
|
22
|
-
const createEntries = (size) => {
|
|
23
|
-
const entries = new Array(size);
|
|
24
|
-
for (let i = 0; i < size; i++) {
|
|
25
|
-
entries[i] = { value: { hash: `h${i}`, hashNumber: BigInt(i + 1) } };
|
|
26
|
-
}
|
|
27
|
-
return entries;
|
|
28
|
-
};
|
|
29
|
-
const createSync = (entries, numbers) => {
|
|
30
|
-
const entryIndex = {
|
|
31
|
-
iterate: () => ({
|
|
32
|
-
all: async () => entries,
|
|
33
|
-
}),
|
|
34
|
-
};
|
|
35
|
-
const send = async () => { };
|
|
36
|
-
const rpc = { send };
|
|
37
|
-
return new RatelessIBLTSynchronizer({
|
|
38
|
-
rpc,
|
|
39
|
-
rangeIndex: {},
|
|
40
|
-
entryIndex,
|
|
41
|
-
log: {},
|
|
42
|
-
coordinateToHash: new Cache({ max: 10 }),
|
|
43
|
-
numbers,
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
await ribltReady;
|
|
47
|
-
const numbers = createNumbers("u64");
|
|
48
|
-
const suite = new Bench({
|
|
49
|
-
name: "rateless-iblt-startsync-cache",
|
|
50
|
-
warmupIterations: Number.isFinite(warmupIterations) ? warmupIterations : 0,
|
|
51
|
-
iterations: Number.isFinite(iterations) ? iterations : undefined,
|
|
52
|
-
});
|
|
53
|
-
const syncsToClose = [];
|
|
54
|
-
for (const size of sizes) {
|
|
55
|
-
const entries = createEntries(size);
|
|
56
|
-
const range = {
|
|
57
|
-
start1: 0n,
|
|
58
|
-
end1: numbers.maxValue,
|
|
59
|
-
start2: 0n,
|
|
60
|
-
end2: 0n,
|
|
61
|
-
};
|
|
62
|
-
const coldSync = createSync(entries, numbers);
|
|
63
|
-
const warmSync = createSync(entries, numbers);
|
|
64
|
-
const warmDecoder = await warmSync.getLocalDecoderForRange(range);
|
|
65
|
-
if (warmDecoder) {
|
|
66
|
-
warmDecoder.free();
|
|
67
|
-
}
|
|
68
|
-
syncsToClose.push(() => coldSync.close());
|
|
69
|
-
syncsToClose.push(() => warmSync.close());
|
|
70
|
-
suite.add(`StartSync local decoder (cold, n=${size})`, async () => {
|
|
71
|
-
coldSync.invalidateLocalRangeEncoderCache();
|
|
72
|
-
const decoder = await coldSync.getLocalDecoderForRange(range);
|
|
73
|
-
if (decoder) {
|
|
74
|
-
decoder.free();
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
suite.add(`StartSync local decoder (warm, n=${size})`, async () => {
|
|
78
|
-
const decoder = await warmSync.getLocalDecoderForRange(range);
|
|
79
|
-
if (decoder) {
|
|
80
|
-
decoder.free();
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
suite.add(`StartSync local decoder (after invalidation, n=${size})`, async () => {
|
|
84
|
-
warmSync.invalidateLocalRangeEncoderCache();
|
|
85
|
-
const decoder = await warmSync.getLocalDecoderForRange(range);
|
|
86
|
-
if (decoder) {
|
|
87
|
-
decoder.free();
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
await suite.run();
|
|
92
|
-
if (process.env.BENCH_JSON === "1") {
|
|
93
|
-
const tasks = suite.tasks.map((task) => ({
|
|
94
|
-
name: task.name,
|
|
95
|
-
hz: task.result?.hz ?? null,
|
|
96
|
-
mean_ms: task.result?.mean ?? null,
|
|
97
|
-
rme: task.result?.rme ?? null,
|
|
98
|
-
samples: task.result?.samples?.length ?? null,
|
|
99
|
-
}));
|
|
100
|
-
process.stdout.write(JSON.stringify({
|
|
101
|
-
name: suite.name,
|
|
102
|
-
tasks,
|
|
103
|
-
meta: { sizes, warmupIterations, iterations },
|
|
104
|
-
}, null, 2));
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
console.table(suite.table());
|
|
108
|
-
}
|
|
109
|
-
for (const closeSync of syncsToClose) {
|
|
110
|
-
await closeSync();
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=rateless-iblt-startsync-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rateless-iblt-startsync-cache.js","sourceRoot":"","sources":["../../benchmark/rateless-iblt-startsync-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receive-prune.d.ts","sourceRoot":"","sources":["../../benchmark/receive-prune.ts"],"names":[],"mappings":""}
|