aifastdb 3.10.2 → 3.10.5

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.
Files changed (62) hide show
  1. package/aifastdb.win32-x64-msvc.node +0 -0
  2. package/dist/architecture-store.d.ts +2 -2
  3. package/dist/architecture-store.d.ts.map +1 -1
  4. package/dist/architecture-store.js +4 -4
  5. package/dist/architecture-store.js.map +1 -1
  6. package/dist/concurrent-document-store-benchmark.d.ts +29 -0
  7. package/dist/concurrent-document-store-benchmark.d.ts.map +1 -0
  8. package/dist/concurrent-document-store-benchmark.js +726 -0
  9. package/dist/concurrent-document-store-benchmark.js.map +1 -0
  10. package/dist/concurrent-document-store-profile.d.ts +15 -0
  11. package/dist/concurrent-document-store-profile.d.ts.map +1 -0
  12. package/dist/concurrent-document-store-profile.js +197 -0
  13. package/dist/concurrent-document-store-profile.js.map +1 -0
  14. package/dist/concurrent-document-store.d.ts +281 -0
  15. package/dist/concurrent-document-store.d.ts.map +1 -0
  16. package/dist/concurrent-document-store.js +354 -0
  17. package/dist/concurrent-document-store.js.map +1 -0
  18. package/dist/document-store.d.ts +11 -12
  19. package/dist/document-store.d.ts.map +1 -1
  20. package/dist/document-store.js +8 -9
  21. package/dist/document-store.js.map +1 -1
  22. package/dist/federation/FederatedDb.d.ts +17 -2
  23. package/dist/federation/FederatedDb.d.ts.map +1 -1
  24. package/dist/federation/FederatedDb.js +23 -4
  25. package/dist/federation/FederatedDb.js.map +1 -1
  26. package/dist/federation/index.d.ts +1 -1
  27. package/dist/federation/index.d.ts.map +1 -1
  28. package/dist/federation/index.js.map +1 -1
  29. package/dist/federation/types.d.ts +11 -0
  30. package/dist/federation/types.d.ts.map +1 -1
  31. package/dist/federation/types.js.map +1 -1
  32. package/dist/find-by-metadata-fast-path-bench.d.ts +19 -0
  33. package/dist/find-by-metadata-fast-path-bench.d.ts.map +1 -0
  34. package/dist/find-by-metadata-fast-path-bench.js +146 -0
  35. package/dist/find-by-metadata-fast-path-bench.js.map +1 -0
  36. package/dist/index.d.ts +3 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +11 -6
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp-server/index.js +1 -1
  41. package/dist/mcp-server/index.js.map +1 -1
  42. package/dist/native.d.ts +3 -2
  43. package/dist/native.d.ts.map +1 -1
  44. package/dist/native.js +9 -4
  45. package/dist/native.js.map +1 -1
  46. package/dist/read-profiler-verify.d.ts +15 -0
  47. package/dist/read-profiler-verify.d.ts.map +1 -0
  48. package/dist/read-profiler-verify.js +283 -0
  49. package/dist/read-profiler-verify.js.map +1 -0
  50. package/dist/social-graph-v2-benchmark.js +98 -8
  51. package/dist/social-graph-v2-benchmark.js.map +1 -1
  52. package/dist/social-graph-v2-read-benchmark.d.ts +19 -0
  53. package/dist/social-graph-v2-read-benchmark.d.ts.map +1 -0
  54. package/dist/social-graph-v2-read-benchmark.js +153 -0
  55. package/dist/social-graph-v2-read-benchmark.js.map +1 -0
  56. package/dist/social-graph-v2.d.ts +20 -0
  57. package/dist/social-graph-v2.d.ts.map +1 -1
  58. package/dist/social-graph-v2.js +28 -0
  59. package/dist/social-graph-v2.js.map +1 -1
  60. package/dist/test-delete.js +2 -2
  61. package/dist/test-delete.js.map +1 -1
  62. package/package.json +3 -3
package/dist/native.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * After building with `napi build`, the actual bindings will be available.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.native = exports.RagChat = exports.LlmGateway = exports.SiFuEngine = exports.EnhancedDocumentStore = exports.SocialGraphV2JS = exports.ContentTypeEnum = exports.version = exports.AiFastDb = exports.ContentType = void 0;
9
+ exports.native = exports.RagChat = exports.LlmGateway = exports.SiFuEngine = exports.ConcurrentDocumentStore = exports.DocumentStore = exports.SocialGraphV2JS = exports.ContentTypeEnum = exports.version = exports.AiFastDb = exports.ContentType = void 0;
10
10
  const path_1 = require("path");
11
11
  // Platform-specific .node file loading
12
12
  function loadNativeModule() {
@@ -83,9 +83,14 @@ exports.version = native.version;
83
83
  exports.ContentTypeEnum = native.ContentType;
84
84
  // Export SocialGraphV2JS class for social graph operations
85
85
  exports.SocialGraphV2JS = SocialGraphV2JSClass;
86
- // Export EnhancedDocumentStore class for document storage
87
- const EnhancedDocumentStoreClass = nativeModule.EnhancedDocumentStore;
88
- exports.EnhancedDocumentStore = EnhancedDocumentStoreClass;
86
+ // Export DocumentStore class for document storage
87
+ // (renamed from EnhancedDocumentStore in phase-361 to align with Rust core /
88
+ // Python public API names)
89
+ const DocumentStoreClass = nativeModule.DocumentStore;
90
+ exports.DocumentStore = DocumentStoreClass;
91
+ // Export ConcurrentDocumentStore class for high-concurrency document storage
92
+ const ConcurrentDocumentStoreClass = nativeModule.ConcurrentDocumentStore;
93
+ exports.ConcurrentDocumentStore = ConcurrentDocumentStoreClass;
89
94
  // Export the SiFuEngine class from native module
90
95
  const SiFuEngineClass = nativeModule.SiFuEngine;
91
96
  exports.SiFuEngine = SiFuEngineClass;
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../ts/native.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../ts/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * phase-378/T378.4: minimal verification that the read-path profilers
4
+ * for ConcurrentDocumentStore and SocialGraphV2 are wired through the
5
+ * NAPI bridge. Writes a few records, calls every read API once, and
6
+ * dumps both profile snapshots so we can eyeball that:
7
+ *
8
+ * 1. `readProfileSnapshot` returns a multi-line string;
9
+ * 2. each instrumented slot has count > 0 after the corresponding API
10
+ * call;
11
+ * 3. the read profiler is independent from the write profiler
12
+ * (resetting one does not affect the other).
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=read-profiler-verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-profiler-verify.d.ts","sourceRoot":"","sources":["../ts/read-profiler-verify.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,283 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * phase-378/T378.4: minimal verification that the read-path profilers
5
+ * for ConcurrentDocumentStore and SocialGraphV2 are wired through the
6
+ * NAPI bridge. Writes a few records, calls every read API once, and
7
+ * dumps both profile snapshots so we can eyeball that:
8
+ *
9
+ * 1. `readProfileSnapshot` returns a multi-line string;
10
+ * 2. each instrumented slot has count > 0 after the corresponding API
11
+ * call;
12
+ * 3. the read profiler is independent from the write profiler
13
+ * (resetting one does not affect the other).
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ const fs = __importStar(require("fs"));
50
+ const os = __importStar(require("os"));
51
+ const path = __importStar(require("path"));
52
+ const concurrent_document_store_1 = require("./concurrent-document-store");
53
+ const social_graph_v2_1 = require("./social-graph-v2");
54
+ function makeTempDir(prefix) {
55
+ return fs.mkdtempSync(path.join(os.tmpdir(), prefix));
56
+ }
57
+ function readSlotMetrics(snapshot, slot) {
58
+ const re = new RegExp(`^\\s*${slot}\\s+count=\\s*(\\d+)\\s+total_ns=\\s*(\\d+)\\s+avg_ns=\\s*(\\d+)`, 'm');
59
+ const m = snapshot.match(re);
60
+ if (!m)
61
+ return null;
62
+ return {
63
+ count: Number.parseInt(m[1], 10),
64
+ totalNs: Number.parseInt(m[2], 10),
65
+ avgNs: Number.parseInt(m[3], 10),
66
+ };
67
+ }
68
+ function readSlotCount(snapshot, slot) {
69
+ return readSlotMetrics(snapshot, slot)?.count ?? null;
70
+ }
71
+ const failures = [];
72
+ function assertEq(actual, expected, message) {
73
+ if (actual === expected) {
74
+ console.log(` PASS: ${message} (got ${actual})`);
75
+ }
76
+ else {
77
+ const failMsg = ` FAIL: ${message} -- expected ${expected}, got ${actual}`;
78
+ console.log(failMsg);
79
+ failures.push({ message: failMsg });
80
+ }
81
+ }
82
+ function assertWithin(actual, min, max, message) {
83
+ if (actual !== null && actual >= min && actual <= max) {
84
+ console.log(` PASS: ${message} (got ${actual}, expected [${min}, ${max}])`);
85
+ }
86
+ else {
87
+ const failMsg = ` FAIL: ${message} -- expected [${min}, ${max}], got ${actual}`;
88
+ console.log(failMsg);
89
+ failures.push({ message: failMsg });
90
+ }
91
+ }
92
+ /**
93
+ * phase-376/T376.3 (E376.B): verify that T376.2's limit pushdown is
94
+ * actually taking effect end-to-end. The phase-378 read profiler records
95
+ * one call per slot per `findByTag`, so `count` cannot tell us how much
96
+ * deep-clone work happened — instead we compare `avg_ns` between two
97
+ * NAPI routes:
98
+ *
99
+ * * limited path: `findByTag(tag, {limit})`
100
+ * -> NAPI smart routing -> `core::find_by_tag_limited`
101
+ * -> clones at most `limit` documents per call
102
+ * * legacy/sorted path: `findByTag(tag, {limit, orderBy})`
103
+ * -> NAPI sort branch -> `core::find_by_tag` (full set)
104
+ * -> clones every one of `hits` documents per call
105
+ *
106
+ * Because each call clones ~limit vs ~hits documents, the legacy path
107
+ * `avg_ns` for `find_by_tag_document_lookup` MUST be substantially
108
+ * larger than the limited path. If somebody regresses NAPI routing back
109
+ * to "always use full set then NAPI-trim", the two paths will produce
110
+ * the same avg_ns and this assertion will fail.
111
+ */
112
+ async function verifyFindByTagLimitPushdown() {
113
+ const dir = makeTempDir('cds-find-by-tag-limit-pushdown-');
114
+ console.log(`\n[CDS/limit-pushdown] tempdir = ${dir}`);
115
+ const store = new concurrent_document_store_1.ConcurrentDocumentStore(dir, {
116
+ shardCount: 4,
117
+ enableWal: false,
118
+ });
119
+ const hits = 500;
120
+ const limit = 50;
121
+ const iterations = 30;
122
+ const totalDocs = 700;
123
+ const ratio = hits / limit; // = 10
124
+ const seed = [];
125
+ for (let i = 0; i < hits; i++) {
126
+ seed.push({ id: `hot-${i}`, content: `hot-body-${i}`, tags: ['hot'] });
127
+ }
128
+ for (let i = 0; i < totalDocs - hits; i++) {
129
+ seed.push({ id: `cold-${i}`, content: `cold-body-${i}`, tags: ['cold'] });
130
+ }
131
+ store.writeBatch(seed);
132
+ store.flush();
133
+ // ---- limited path (NAPI smart routing -> core::find_by_tag_limited)
134
+ store.readProfileReset();
135
+ for (let i = 0; i < iterations; i++) {
136
+ const r = store.findByTag('hot', { limit });
137
+ if (r.length !== limit) {
138
+ failures.push({
139
+ message: ` FAIL: findByTag('hot', {limit:${limit}}) returned ${r.length}, expected ${limit}`,
140
+ });
141
+ }
142
+ }
143
+ const limitedSnapshot = store.readProfileSnapshot();
144
+ console.log('\n--- read profile (limited path) ---');
145
+ console.log(limitedSnapshot);
146
+ const limitedTotal = readSlotMetrics(limitedSnapshot, 'find_by_tag_total');
147
+ const limitedDoc = readSlotMetrics(limitedSnapshot, 'find_by_tag_document_lookup');
148
+ const limitedIdx = readSlotMetrics(limitedSnapshot, 'find_by_tag_index_lookup');
149
+ assertEq(limitedTotal?.count ?? null, iterations, 'limited find_by_tag_total count');
150
+ assertEq(limitedIdx?.count ?? null, iterations, 'limited find_by_tag_index_lookup count');
151
+ assertEq(limitedDoc?.count ?? null, iterations, 'limited find_by_tag_document_lookup count');
152
+ // ---- legacy/sorted path (NAPI sort branch -> core::find_by_tag full set)
153
+ store.readProfileReset();
154
+ for (let i = 0; i < iterations; i++) {
155
+ const r = store.findByTag('hot', { limit, orderBy: 'createdAt' });
156
+ if (r.length !== limit) {
157
+ failures.push({
158
+ message: ` FAIL: sorted findByTag returned ${r.length}, expected ${limit}`,
159
+ });
160
+ }
161
+ }
162
+ const sortedSnapshot = store.readProfileSnapshot();
163
+ console.log('\n--- read profile (sorted/legacy path) ---');
164
+ console.log(sortedSnapshot);
165
+ const sortedDoc = readSlotMetrics(sortedSnapshot, 'find_by_tag_document_lookup');
166
+ assertEq(readSlotCount(sortedSnapshot, 'find_by_tag_total'), iterations, 'sorted find_by_tag_total count');
167
+ // Core routing assertion: legacy path must clone ~hits docs per call,
168
+ // limited path must clone ~limit docs per call. The avg_ns ratio
169
+ // therefore reflects the work-per-call ratio, gated by `limit/hits`.
170
+ if (limitedDoc && sortedDoc && limitedDoc.avgNs > 0) {
171
+ const observedRatio = sortedDoc.avgNs / Math.max(1, limitedDoc.avgNs);
172
+ const minRatio = ratio / 3; // = ~3x; allow 3x slack for cache/JIT noise
173
+ if (observedRatio >= minRatio) {
174
+ console.log(` PASS: sorted vs limited document_lookup avg_ns ratio = ${observedRatio.toFixed(1)}x (limited=${limitedDoc.avgNs}ns, sorted=${sortedDoc.avgNs}ns); expected >= ${minRatio.toFixed(1)}x given hits/limit=${ratio}`);
175
+ }
176
+ else {
177
+ const failMsg = ` FAIL: sorted vs limited document_lookup avg_ns ratio = ${observedRatio.toFixed(1)}x (limited=${limitedDoc.avgNs}ns, sorted=${sortedDoc.avgNs}ns); expected >= ${minRatio.toFixed(1)}x. Likely regression: limit no longer being pushed into core when order_by is None.`;
178
+ console.log(failMsg);
179
+ failures.push({ message: failMsg });
180
+ }
181
+ }
182
+ else {
183
+ failures.push({
184
+ message: ` FAIL: missing slot data — limitedDoc=${JSON.stringify(limitedDoc)} sortedDoc=${JSON.stringify(sortedDoc)}`,
185
+ });
186
+ }
187
+ store.close();
188
+ fs.rmSync(dir, { recursive: true, force: true });
189
+ }
190
+ async function verifyConcurrentDocumentStore() {
191
+ const dir = makeTempDir('cds-read-profile-');
192
+ console.log(`\n[CDS] tempdir = ${dir}`);
193
+ const store = new concurrent_document_store_1.ConcurrentDocumentStore(dir, {
194
+ shardCount: 4,
195
+ enableWal: false,
196
+ });
197
+ store.profileReset();
198
+ store.readProfileReset();
199
+ const writes = [];
200
+ for (let i = 0; i < 200; i++) {
201
+ writes.push({
202
+ id: `doc-${i}`,
203
+ content: `body-${i}`,
204
+ tags: i % 2 === 0 ? ['even', `bucket-${i % 5}`] : ['odd', `bucket-${i % 5}`],
205
+ type: i % 3 === 0 ? 'note' : 'memo',
206
+ });
207
+ }
208
+ store.writeBatch(writes);
209
+ store.flush();
210
+ for (let i = 0; i < 50; i++) {
211
+ store.get(`doc-${i % 200}`);
212
+ }
213
+ store.findByTag('even');
214
+ store.findByTag('bucket-2');
215
+ store.findByTag('no-such-tag');
216
+ store.countByTag('even');
217
+ store.allTags();
218
+ store.findByMetadata({ unused: 'unused' });
219
+ console.log('\n--- write profile (CDS) ---');
220
+ console.log(store.profileSnapshot());
221
+ console.log('\n--- read profile (CDS, before reset) ---');
222
+ console.log(store.readProfileSnapshot());
223
+ store.readProfileReset();
224
+ const after = store.readProfileSnapshot();
225
+ console.log('--- read profile (CDS, after readProfileReset) ---');
226
+ console.log(after);
227
+ const writeProfile = store.profileSnapshot();
228
+ const writeNonZero = /count=\s*[1-9]/.test(writeProfile);
229
+ console.log(`[CDS] write profile still non-empty after readProfileReset: ${writeNonZero}`);
230
+ store.close();
231
+ fs.rmSync(dir, { recursive: true, force: true });
232
+ }
233
+ async function verifySocialGraphV2() {
234
+ const dir = makeTempDir('sgv2-read-profile-');
235
+ console.log(`\n[SGV2] tempdir = ${dir}`);
236
+ const graph = new social_graph_v2_1.SocialGraphV2({ path: dir, walEnabled: false });
237
+ graph.profileReset();
238
+ graph.readProfileReset();
239
+ const personIds = [];
240
+ for (let i = 0; i < 30; i++) {
241
+ const p = graph.addPerson({ name: `person-${i}` });
242
+ personIds.push(p.id);
243
+ }
244
+ for (let i = 0; i < 29; i++) {
245
+ graph.addFriend(personIds[i], personIds[i + 1]);
246
+ }
247
+ for (let i = 0; i < 20; i++) {
248
+ graph.getPerson(personIds[i]);
249
+ }
250
+ graph.listPersons();
251
+ graph.getFriends(personIds[0]);
252
+ graph.areFriends(personIds[0], personIds[1]);
253
+ graph.areFriends(personIds[0], personIds[20]);
254
+ graph.getEntityRelations(personIds[5]);
255
+ graph.listRelations();
256
+ console.log('\n--- write profile (SGV2) ---');
257
+ console.log(graph.profileSnapshot());
258
+ console.log('\n--- read profile (SGV2, before reset) ---');
259
+ console.log(graph.readProfileSnapshot());
260
+ graph.readProfileReset();
261
+ console.log('--- read profile (SGV2, after readProfileReset) ---');
262
+ console.log(graph.readProfileSnapshot());
263
+ fs.rmSync(dir, { recursive: true, force: true });
264
+ }
265
+ async function main() {
266
+ await verifyConcurrentDocumentStore();
267
+ await verifySocialGraphV2();
268
+ await verifyFindByTagLimitPushdown();
269
+ console.log('\nphase-378/T378.4 + phase-376/T376.3: read-profile dump verification done.');
270
+ if (failures.length > 0) {
271
+ console.error(`\n!!! ${failures.length} assertion(s) FAILED:`);
272
+ for (const f of failures) {
273
+ console.error(f.message);
274
+ }
275
+ process.exit(1);
276
+ }
277
+ console.log('All assertions PASSED.');
278
+ }
279
+ main().catch((err) => {
280
+ console.error(err);
281
+ process.exit(1);
282
+ });
283
+ //# sourceMappingURL=read-profiler-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-profiler-verify.js","sourceRoot":"","sources":["../ts/read-profiler-verify.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,14 @@ const fs = __importStar(require("fs"));
49
49
  const os = __importStar(require("os"));
50
50
  const path = __importStar(require("path"));
51
51
  const social_graph_v2_1 = require("./social-graph-v2");
52
+ const ALL_SCENARIOS = new Set([
53
+ 'personAsync',
54
+ 'personFast',
55
+ 'personBatch',
56
+ 'friendAsync',
57
+ 'friendFast',
58
+ 'friendBatch',
59
+ ]);
52
60
  function parseArgs() {
53
61
  const cpuCount = os.cpus().length;
54
62
  const defaults = {
@@ -56,14 +64,21 @@ function parseArgs() {
56
64
  concurrency: Math.max(8, Math.min(cpuCount * 2, 128)),
57
65
  batchSize: 500,
58
66
  shardCount: Math.max(4, Math.min(cpuCount, 32)),
67
+ profile: false,
59
68
  };
60
69
  const args = new Map();
70
+ const flags = new Set();
61
71
  for (const rawArg of process.argv.slice(2)) {
62
72
  if (!rawArg.startsWith('--'))
63
73
  continue;
64
- const [key, value] = rawArg.slice(2).split('=');
65
- if (key && value)
66
- args.set(key, value);
74
+ const body = rawArg.slice(2);
75
+ const eqIdx = body.indexOf('=');
76
+ if (eqIdx === -1) {
77
+ flags.add(body);
78
+ }
79
+ else {
80
+ args.set(body.slice(0, eqIdx), body.slice(eqIdx + 1));
81
+ }
67
82
  }
68
83
  const readPositiveInt = (key) => {
69
84
  const raw = args.get(key);
@@ -75,11 +90,20 @@ function parseArgs() {
75
90
  }
76
91
  return parsed;
77
92
  };
93
+ const scenariosRaw = args.get('scenarios');
94
+ const scenarios = scenariosRaw
95
+ ? new Set(scenariosRaw.split(',').map((s) => s.trim()).filter((s) => ALL_SCENARIOS.has(s)))
96
+ : ALL_SCENARIOS;
97
+ const walRaw = args.get('wal');
98
+ const walEnabled = walRaw === undefined ? true : !(walRaw === 'false' || walRaw === '0' || walRaw === 'off');
78
99
  return {
79
100
  total: readPositiveInt('total'),
80
101
  concurrency: readPositiveInt('concurrency'),
81
102
  batchSize: readPositiveInt('batchSize'),
82
103
  shardCount: readPositiveInt('shardCount'),
104
+ profile: flags.has('profile'),
105
+ scenarios,
106
+ walEnabled,
83
107
  };
84
108
  }
85
109
  function makeTempDir(prefix) {
@@ -117,10 +141,19 @@ function printHeader(options) {
117
141
  console.log(` Async concurrency: ${options.concurrency.toLocaleString()}`);
118
142
  console.log(` Batch size: ${options.batchSize.toLocaleString()}`);
119
143
  console.log(` Shards: ${options.shardCount.toLocaleString()}`);
144
+ console.log(` WAL enabled: ${options.walEnabled}`);
120
145
  console.log(` CPU cores: ${os.cpus().length}`);
121
146
  console.log(` Platform: ${process.platform} ${process.arch}`);
122
147
  console.log('');
123
148
  }
149
+ function makeGraph(dbPath, options) {
150
+ return new social_graph_v2_1.SocialGraphV2({
151
+ path: dbPath,
152
+ shardCount: options.shardCount,
153
+ mode: 'high_throughput',
154
+ walEnabled: options.walEnabled,
155
+ });
156
+ }
124
157
  async function runConcurrentRange(total, concurrency, worker) {
125
158
  let nextIndex = 0;
126
159
  const workerCount = Math.min(concurrency, total);
@@ -178,9 +211,10 @@ function printResult(result) {
178
211
  }
179
212
  async function benchmarkAddPersonAsync(options) {
180
213
  const dbPath = makeTempDir('sgv2-api-async');
181
- const graph = social_graph_v2_1.SocialGraphV2.highThroughput(dbPath, options.shardCount);
214
+ const graph = makeGraph(dbPath, options);
182
215
  try {
183
216
  const workerCount = Math.min(options.concurrency, options.total);
217
+ graph.profileReset();
184
218
  const start = performance.now();
185
219
  await runConcurrentRange(options.total, workerCount, async (index) => {
186
220
  await graph.addPersonAsync(makePerson(index));
@@ -188,6 +222,10 @@ async function benchmarkAddPersonAsync(options) {
188
222
  graph.flush();
189
223
  graph.save();
190
224
  const elapsedMs = performance.now() - start;
225
+ if (process.env.SGV2_DUMP_PROFILE === '1') {
226
+ console.log('\n--- profile (addPersonAsync) ---');
227
+ console.log(graph.profileSnapshot());
228
+ }
191
229
  return {
192
230
  scenario: `addPersonAsync (concurrency=${workerCount})`,
193
231
  total: options.total,
@@ -205,10 +243,45 @@ async function benchmarkAddPersonAsync(options) {
205
243
  cleanupDir(dbPath);
206
244
  }
207
245
  }
246
+ async function benchmarkAddPersonFast(options) {
247
+ const dbPath = makeTempDir('sgv2-api-fast');
248
+ const graph = makeGraph(dbPath, options);
249
+ try {
250
+ const workerCount = Math.min(options.concurrency, options.total);
251
+ graph.profileReset();
252
+ const start = performance.now();
253
+ await runConcurrentRange(options.total, workerCount, async (index) => {
254
+ await graph.addPersonFast(makePerson(index));
255
+ });
256
+ graph.flush();
257
+ graph.save();
258
+ const elapsedMs = performance.now() - start;
259
+ if (process.env.SGV2_DUMP_PROFILE === '1') {
260
+ console.log('\n--- profile (addPersonFast) ---');
261
+ console.log(graph.profileSnapshot());
262
+ }
263
+ return {
264
+ scenario: `addPersonFast (concurrency=${workerCount})`,
265
+ total: options.total,
266
+ elapsedMs,
267
+ throughput: options.total / (elapsedMs / 1000),
268
+ avgMsPerItem: elapsedMs / options.total,
269
+ unit: 'persons',
270
+ entityCount: graph.getEntityCount(),
271
+ relationCount: graph.getRelationCount(),
272
+ metrics: graph.getMetrics(),
273
+ };
274
+ }
275
+ finally {
276
+ graph.shutdown();
277
+ cleanupDir(dbPath);
278
+ }
279
+ }
208
280
  async function benchmarkAddPersonsBatch(options) {
209
281
  const dbPath = makeTempDir('sgv2-api-batch');
210
- const graph = social_graph_v2_1.SocialGraphV2.highThroughput(dbPath, options.shardCount);
282
+ const graph = makeGraph(dbPath, options);
211
283
  try {
284
+ graph.profileReset();
212
285
  const start = performance.now();
213
286
  for (let batchStart = 0; batchStart < options.total; batchStart += options.batchSize) {
214
287
  const batchEnd = Math.min(batchStart + options.batchSize, options.total);
@@ -221,6 +294,10 @@ async function benchmarkAddPersonsBatch(options) {
221
294
  graph.flush();
222
295
  graph.save();
223
296
  const elapsedMs = performance.now() - start;
297
+ if (process.env.SGV2_DUMP_PROFILE === '1') {
298
+ console.log('\n--- profile (addPersonsBatch) ---');
299
+ console.log(graph.profileSnapshot());
300
+ }
224
301
  return {
225
302
  scenario: `addPersonsBatch (batchSize=${options.batchSize})`,
226
303
  total: options.total,
@@ -240,7 +317,7 @@ async function benchmarkAddPersonsBatch(options) {
240
317
  }
241
318
  async function benchmarkAddFriendAsync(options) {
242
319
  const dbPath = makeTempDir('sgv2-api-friend-async');
243
- const graph = social_graph_v2_1.SocialGraphV2.highThroughput(dbPath, options.shardCount);
320
+ const graph = makeGraph(dbPath, options);
244
321
  try {
245
322
  await seedPersons(graph, options.total + 1, options.concurrency);
246
323
  const workerCount = Math.min(options.concurrency, options.total);
@@ -271,7 +348,7 @@ async function benchmarkAddFriendAsync(options) {
271
348
  }
272
349
  async function benchmarkAddFriendsBatch(options) {
273
350
  const dbPath = makeTempDir('sgv2-api-friend-batch');
274
- const graph = social_graph_v2_1.SocialGraphV2.highThroughput(dbPath, options.shardCount);
351
+ const graph = makeGraph(dbPath, options);
275
352
  try {
276
353
  await seedPersons(graph, options.total + 1, options.concurrency);
277
354
  const start = performance.now();
@@ -321,13 +398,26 @@ async function main() {
321
398
  printHeader(options);
322
399
  const asyncResult = await benchmarkAddPersonAsync(options);
323
400
  printResult(asyncResult);
401
+ const fastResult = await benchmarkAddPersonFast(options);
402
+ printResult(fastResult);
324
403
  const batchResult = await benchmarkAddPersonsBatch(options);
325
404
  printResult(batchResult);
326
405
  const friendAsyncResult = await benchmarkAddFriendAsync(options);
327
406
  printResult(friendAsyncResult);
328
407
  const friendBatchResult = await benchmarkAddFriendsBatch(options);
329
408
  printResult(friendBatchResult);
330
- printSummary(asyncResult, batchResult, friendAsyncResult, friendBatchResult);
409
+ console.log('\n============================================================');
410
+ console.log(' Summary (phase-374 baseline)');
411
+ console.log('============================================================');
412
+ console.log(` addPersonAsync: ${Math.round(asyncResult.throughput).toLocaleString()} persons/sec`);
413
+ console.log(` addPersonFast: ${Math.round(fastResult.throughput).toLocaleString()} persons/sec`);
414
+ console.log(` addPersonsBatch: ${Math.round(batchResult.throughput).toLocaleString()} persons/sec`);
415
+ console.log(` addFriendAsync: ${Math.round(friendAsyncResult.throughput).toLocaleString()} relations/sec`);
416
+ console.log(` addFriendsBatch: ${Math.round(friendBatchResult.throughput).toLocaleString()} relations/sec`);
417
+ const personFastVsAsync = fastResult.throughput / Math.max(asyncResult.throughput, 1);
418
+ const personBatchVsFast = batchResult.throughput / Math.max(fastResult.throughput, 1);
419
+ console.log(` fast vs async: ${personFastVsAsync.toFixed(2)}x`);
420
+ console.log(` batch vs fast: ${personBatchVsFast.toFixed(2)}x`);
331
421
  }
332
422
  main().catch((error) => {
333
423
  console.error('Benchmark failed:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"social-graph-v2-benchmark.js","sourceRoot":"","sources":["../ts/social-graph-v2-benchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"social-graph-v2-benchmark.js","sourceRoot":"","sources":["../ts/social-graph-v2-benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SocialGraphV2 read-path baseline (phase-378/T378.5).
4
+ *
5
+ * Drives the high-frequency read paths instrumented by
6
+ * `social::concurrent::read_profiler` and dumps the profile snapshot per
7
+ * scenario so we can establish baseline numbers + identify the hottest
8
+ * sub-slots.
9
+ *
10
+ * Scenarios:
11
+ * - getPerson (single-id point read)
12
+ * - listPersons (full-scan O(N_persons))
13
+ * - getFriends (relation walk + entity lookup)
14
+ * - areFriends (boolean relation existence)
15
+ * - listRelations (full relation scan)
16
+ * - getEntityRelations(per-entity relation walk)
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=social-graph-v2-read-benchmark.d.ts.map