-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ts
78 lines (67 loc) · 1.95 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { run } from 'mitata';
import arg from 'arg';
import * as prismaNativeQeBench from 'prisma-native-qe';
import * as prismaPgNapiBench from 'prisma-pg-napi-qe';
import * as prismaPgWasmBench from 'prisma-pg-wasm-qe';
import * as prismaPgQcBench from './benches/prisma-pg-qc';
import { Runner, generateCommonBenchmarks } from 'common';
const [prismaNativeQe, prismaPgNapiQe, prismaPgWasmQe, prismaPgQc] =
await Promise.all([
prismaNativeQeBench.setup(),
prismaPgNapiBench.setup(),
prismaPgWasmBench.setup(),
prismaPgQcBench.setup(),
]);
async function main() {
const runners: Runner<any>[] = [
{
name: 'Native QE with tokio-postgres',
benchRunner: prismaNativeQeBench.benches,
client: prismaNativeQe,
},
{
name: 'Native QE with pg driver adapter',
benchRunner: prismaPgNapiBench.benches,
client: prismaPgNapiQe,
},
{
name: 'Edge-compatible QE with pg driver adapter',
benchRunner: prismaPgWasmBench.benches,
client: prismaPgWasmQe,
},
{
name: 'Query compiler with pg driver adapter',
benchRunner: prismaPgQcBench.benches,
client: prismaPgQc,
},
];
const args = arg({
'--bench': [String],
'--runner': [String],
'--skip': Boolean,
// Aliases
'-r': '--runner',
});
const runnerFilters = args['--runner']?.map((r) => r.toLowerCase());
const filteredRunners =
args['--runner'] === undefined
? runners
: runners.filter((r) => runnerFilters?.includes(r.name.toLowerCase()));
if (filteredRunners.length === 0) {
throw new Error(
'There must be at least one runner for the benchmark to run'
);
}
await generateCommonBenchmarks(
filteredRunners,
args['--bench'],
args['--skip'] ?? false
);
await run(JSON.parse(process.env.MITATA_CONFIG || '{}'));
await Promise.all([
prismaNativeQe.$disconnect(),
prismaPgNapiQe.$disconnect(),
prismaPgWasmQe.$disconnect(),
]);
}
main();