Skip to content

Commit a25f9e9

Browse files
committed
chore: add performance testing
1 parent bf957a8 commit a25f9e9

1 file changed

Lines changed: 118 additions & 0 deletions

File tree

perf/N3StoreStar-perf.js

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
#!/usr/bin/env node
2+
const N3 = require('..');
3+
const assert = require('assert');
4+
5+
console.log('N3Store performance test');
6+
7+
const prefix = 'http://example.org/#';
8+
9+
/* Test triples */
10+
const dim = Number.parseInt(process.argv[2], 10) || 22;
11+
const dimSquared = dim * dim;
12+
const dimCubed = dimSquared * dim;
13+
const dimToTheFour = dimCubed * dim;
14+
const dimToTheFive = dimToTheFour * dim;
15+
16+
const store = new N3.Store();
17+
let TEST = `- Adding ${dimToTheFive} triples to the default graph`;
18+
console.time(TEST);
19+
let i, j, k, l, m;
20+
for (i = 0; i < dim; i++)
21+
for (j = 0; j < dim; j++)
22+
for (k = 0; k < dim; k++)
23+
for (l = 0; l < dim; l++)
24+
for (m = 0; m < dim; m++)
25+
store.addQuad(
26+
N3.DataFactory.quad(
27+
N3.DataFactory.namedNode(prefix + i),
28+
N3.DataFactory.namedNode(prefix + j),
29+
N3.DataFactory.namedNode(prefix + k)
30+
),
31+
N3.DataFactory.namedNode(prefix + l),
32+
N3.DataFactory.namedNode(prefix + m)
33+
);
34+
console.timeEnd(TEST);
35+
36+
console.log(`* Memory usage for triples: ${Math.round(process.memoryUsage().rss / 1024 / 1024)}MB`);
37+
38+
TEST = `- Finding all ${dimToTheFive} triples in the default graph ${dimSquared * 1} times (0 variables)`;
39+
console.time(TEST);
40+
for (i = 0; i < dim; i++)
41+
for (j = 0; j < dim; j++)
42+
for (k = 0; k < dim; k++)
43+
for (l = 0; l < dim; l++)
44+
for (m = 0; m < dim; m++)
45+
assert.equal(store.getQuads(
46+
N3.DataFactory.quad(
47+
N3.DataFactory.namedNode(prefix + i),
48+
N3.DataFactory.namedNode(prefix + j),
49+
N3.DataFactory.namedNode(prefix + k)
50+
),
51+
N3.DataFactory.namedNode(prefix + l),
52+
N3.DataFactory.namedNode(prefix + m)
53+
).length, 1);
54+
console.timeEnd(TEST);
55+
56+
TEST = `- Finding all ${dimCubed} triples in the default graph ${dimSquared * 2} times (1 variable subject)`;
57+
console.time(TEST);
58+
for (i = 0; i < dim; i++)
59+
for (j = 0; j < dim; j++)
60+
assert.equal(store.getQuads(null, N3.DataFactory.namedNode(prefix + i), N3.DataFactory.namedNode(prefix + j)).length, dimCubed);
61+
console.timeEnd(TEST);
62+
63+
TEST = `- Finding all ${0} triples in the default graph ${dimSquared * 2} times (1 variable predicate)`;
64+
console.time(TEST);
65+
for (i = 0; i < dim; i++)
66+
for (j = 0; j < dim; j++)
67+
assert.equal(store.getQuads(N3.DataFactory.namedNode(prefix + i), null, N3.DataFactory.namedNode(prefix + j)).length, 0);
68+
console.timeEnd(TEST);
69+
70+
TEST = `- Finding all ${dim} triples in the default graph ${dimSquared * 4} times (1 variable predicate)`;
71+
console.time(TEST);
72+
for (i = 0; i < dim; i++)
73+
for (j = 0; j < dim; j++)
74+
for (k = 0; k < dim; k++)
75+
for (l = 0; l < dim; l++)
76+
assert.equal(store.getQuads(N3.DataFactory.quad(
77+
N3.DataFactory.namedNode(prefix + i),
78+
N3.DataFactory.namedNode(prefix + j),
79+
N3.DataFactory.namedNode(prefix + k)
80+
), null, N3.DataFactory.namedNode(prefix + l)).length, dim);
81+
console.timeEnd(TEST);
82+
83+
TEST = `- Finding all ${0} triples in the default graph ${dimSquared * 2} times (1 variable object)`;
84+
console.time(TEST);
85+
for (i = 0; i < dim; i++)
86+
for (j = 0; j < dim; j++)
87+
assert.equal(store.getQuads(N3.DataFactory.namedNode(prefix + i), N3.DataFactory.namedNode(prefix + j), null).length, 0);
88+
console.timeEnd(TEST);
89+
90+
TEST = `- Finding all ${dim} triples in the default graph ${dimSquared * 4} times (1 variable objects)`;
91+
console.time(TEST);
92+
for (i = 0; i < dim; i++)
93+
for (j = 0; j < dim; j++)
94+
for (k = 0; k < dim; k++)
95+
for (l = 0; l < dim; l++)
96+
assert.equal(store.getQuads(N3.DataFactory.quad(
97+
N3.DataFactory.namedNode(prefix + i),
98+
N3.DataFactory.namedNode(prefix + j),
99+
N3.DataFactory.namedNode(prefix + k)
100+
), N3.DataFactory.namedNode(prefix + l), null).length, dim);
101+
console.timeEnd(TEST);
102+
103+
TEST = `- Finding all ${dimSquared} triples in the default graph ${dimSquared * 1} times (2 variables)`;
104+
console.time(TEST);
105+
for (i = 0; i < dim; i++)
106+
for (j = 0; j < dim; j++)
107+
for (k = 0; k < dim; k++)
108+
assert.equal(store.getQuads(
109+
N3.DataFactory.quad(
110+
N3.DataFactory.namedNode(prefix + i),
111+
N3.DataFactory.namedNode(prefix + j),
112+
N3.DataFactory.namedNode(prefix + k)
113+
),
114+
null,
115+
null
116+
).length,
117+
dimSquared);
118+
console.timeEnd(TEST);

0 commit comments

Comments
 (0)