Skip to content

Commit 0584757

Browse files
committed
Updated benchmarks with sublevel creation benchmarks
1 parent fbcdeea commit 0584757

10 files changed

+1583
-731
lines changed

benches/DB1KiB.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ const logger = new Logger('DB1KiB Bench', LogLevel.WARN, [new StreamHandler()]);
1111

1212
async function main() {
1313
const dataDir = await fs.promises.mkdtemp(
14-
path.join(os.tmpdir(), 'encryptedfs-benches-'),
14+
path.join(os.tmpdir(), 'db-benches-'),
1515
);
1616
const dbPath = `${dataDir}/db`;
1717
const db = await DB.createDB({ dbPath, logger });
18-
await db.start();
1918
const data0 = crypto.randomBytes(0);
2019
const data1KiB = crypto.randomBytes(1024);
2120
const summary = await b.suite(

benches/DB1MiB.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ const logger = new Logger('DB1MiB Bench', LogLevel.WARN, [new StreamHandler()]);
1111

1212
async function main() {
1313
const dataDir = await fs.promises.mkdtemp(
14-
path.join(os.tmpdir(), 'encryptedfs-benches-'),
14+
path.join(os.tmpdir(), 'db-benches-'),
1515
);
1616
const dbPath = `${dataDir}/db`;
1717
const db = await DB.createDB({ dbPath, logger });
18-
await db.start();
1918
const data0 = crypto.randomBytes(0);
2019
const data1MiB = crypto.randomBytes(1024 * 1024);
2120
const summary = await b.suite(

benches/DBLevel.ts

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import os from 'os';
2+
import path from 'path';
3+
import fs from 'fs';
4+
import b from 'benny';
5+
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger';
6+
import DB from '@/DB';
7+
import packageJson from '../package.json';
8+
9+
const logger = new Logger('DBLevel Bench', LogLevel.WARN, [
10+
new StreamHandler(),
11+
]);
12+
13+
async function main() {
14+
const dataDir = await fs.promises.mkdtemp(
15+
path.join(os.tmpdir(), 'encryptedfs-benches-'),
16+
);
17+
const dbPath = `${dataDir}/db`;
18+
const db = await DB.createDB({ dbPath, logger });
19+
const summary = await b.suite(
20+
'DBLevel',
21+
b.add('create 1 sublevels', async () => {
22+
let level;
23+
for (let i = 0; i < 1; i++) {
24+
level = await db.level(`level${i}`, level);
25+
}
26+
}),
27+
b.add('create 2 sublevels', async () => {
28+
let level;
29+
for (let i = 0; i < 2; i++) {
30+
level = await db.level(`level${i}`, level);
31+
}
32+
}),
33+
b.add('create 3 sublevels', async () => {
34+
let level;
35+
for (let i = 0; i < 3; i++) {
36+
level = await db.level(`level${i}`, level);
37+
}
38+
}),
39+
b.add('create 4 sublevels', async () => {
40+
let level;
41+
for (let i = 0; i < 4; i++) {
42+
level = await db.level(`level${i}`, level);
43+
}
44+
}),
45+
b.add('get via sublevel', async () => {
46+
await db.put(['level0'], 'hello', 'world');
47+
return async () => {
48+
const level = await db.level('level0');
49+
await level.get('hello');
50+
};
51+
}),
52+
b.add('get via key path concatenation', async () => {
53+
await db.put(['level0'], 'hello', 'world');
54+
return async () => {
55+
await db.get(['level0'], 'hello');
56+
};
57+
}),
58+
b.cycle(),
59+
b.complete(),
60+
b.save({
61+
file: 'DBLevel',
62+
folder: 'benches/results',
63+
version: packageJson.version,
64+
details: true,
65+
}),
66+
b.save({
67+
file: 'DBLevel',
68+
folder: 'benches/results',
69+
format: 'chart.html',
70+
}),
71+
);
72+
await db.stop();
73+
await fs.promises.rm(dataDir, {
74+
force: true,
75+
recursive: true,
76+
});
77+
return summary;
78+
}
79+
80+
if (require.main === module) {
81+
(async () => {
82+
await main();
83+
})();
84+
}
85+
86+
export default main;

benches/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import fs from 'fs';
44
import si from 'systeminformation';
55
import DB1KiBBench from './DB1KiB';
66
import DB1MiBBench from './DB1MiB';
7+
import DBLevelBench from './DBLevel';
78

89
async function main(): Promise<void> {
910
await DB1KiBBench();
1011
await DB1MiBBench();
12+
await DBLevelBench();
1113
const systemData = await si.get({
1214
cpu: '*',
1315
osInfo: 'platform, distro, release, kernel, arch',

benches/results/DB1KiB.chart.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
</head>
1717
<body>
1818
<div style="max-width: 800px">
19-
<canvas id="chart1641977642424" width="16" height="9"></canvas>
19+
<canvas id="chart1648010273459" width="16" height="9"></canvas>
2020
</div>
2121
<script>
2222
const format = (num) => {
@@ -34,10 +34,10 @@
3434

3535
return chunked.map((chunk) => chunk.join("")).join(" ");
3636
};
37-
const ctx1641977642424 = document
38-
.getElementById("chart1641977642424")
37+
const ctx1648010273459 = document
38+
.getElementById("chart1648010273459")
3939
.getContext("2d");
40-
const chart1641977642424 = new Chart(ctx1641977642424, {
40+
const chart1648010273459 = new Chart(ctx1648010273459, {
4141
type: "bar",
4242
data: {
4343
labels: [
@@ -48,7 +48,7 @@
4848
],
4949
datasets: [
5050
{
51-
data: [51174, 32018, 37253, 20855],
51+
data: [50696, 32195, 35092, 17442],
5252
backgroundColor: [
5353
"rgba(63, 142, 252, 0.8)",
5454
"rgba(116, 165, 127, 0.8)",

0 commit comments

Comments
 (0)