Skip to content

Commit 5aa82d0

Browse files
CMCDragonkaitegefaulkes
authored andcommitted
Vault sharing, permissions and scanning:
- NodeId fixes for vaults tests - Replaced makeVaultIdPretty` with `encodeVaultId`
1 parent 4aacfb8 commit 5aa82d0

93 files changed

Lines changed: 6893 additions & 5091 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

benches/gitgc.ts

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import b from 'benny';
2+
import packageJson from '../package.json';
3+
4+
async function main () {
5+
let map = new Map();
6+
let obj = {};
7+
let arr = [];
8+
let set = new Set();
9+
const summary = await b.suite(
10+
'gitgc',
11+
b.add('map', async () => {
12+
map = new Map();
13+
return async () => {
14+
for (let i = 0; i < 1000; i++) {
15+
map.set(i, undefined);
16+
}
17+
for (let i = 0; i < 1000; i++) {
18+
map.delete(i);
19+
}
20+
for (const i of map) {
21+
// NOOP
22+
}
23+
}
24+
}),
25+
b.add('obj', async () => {
26+
obj = {};
27+
return async () => {
28+
for (let i = 0; i < 1000; i++) {
29+
obj[i] = undefined;
30+
}
31+
for (let i = 0; i < 1000; i++) {
32+
delete obj[i];
33+
}
34+
for (const i in obj) {
35+
// NOOP
36+
}
37+
};
38+
}),
39+
b.add('arr', async () => {
40+
// you first have to count the number of objects
41+
arr = [];
42+
return async () => {
43+
// you have to iterate for each object
44+
// then for each value in length
45+
for (let i = 0; i < 1000; i++) {
46+
if (i === arr.length) {
47+
// double the vector
48+
arr.length = arr.length * 2 || 2;
49+
}
50+
arr[i] = { id: i, mark: false };
51+
// arr.push({ id: i, mark: false});
52+
}
53+
// this has to iterate the length of the array
54+
// but stop as soon as it reaches the end
55+
// it gets complicate, but for 5x improvement
56+
// it could be interesting
57+
for (let i = 0; i < 1000; i++) {
58+
arr[i].mark = true;
59+
}
60+
for (let i = 0; i < 1000; i++) {
61+
if (arr[i].mark === false) {
62+
// NOOP
63+
}
64+
}
65+
};
66+
}),
67+
b.add('set', async () => {
68+
set = new Set();
69+
return async () => {
70+
for (let i = 0; i < 1000; i++) {
71+
set.add(i);
72+
}
73+
for (let i = 0; i < 1000; i++) {
74+
set.delete(i);
75+
}
76+
for (const i of set) {
77+
// NOOP
78+
}
79+
};
80+
}),
81+
b.cycle(),
82+
b.complete(),
83+
b.save({
84+
file: 'gitgc',
85+
folder: 'benches/results',
86+
version: packageJson.version,
87+
details: true,
88+
}),
89+
b.save({
90+
file: 'gitgc',
91+
folder: 'benches/results',
92+
format: 'chart.html',
93+
}),
94+
);
95+
return summary;
96+
}
97+
98+
if (require.main === module) {
99+
(async () => {
100+
await main();
101+
})();
102+
}
103+
104+
export default main;

benches/index.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env node
2+
3+
import fs from 'fs';
4+
import si from 'systeminformation';
5+
import gitgc from './gitgc';
6+
7+
async function main(): Promise<void> {
8+
await gitgc();
9+
const systemData = await si.get({
10+
cpu: '*',
11+
osInfo: 'platform, distro, release, kernel, arch',
12+
system: 'model, manufacturer',
13+
});
14+
await fs.promises.writeFile(
15+
'benches/results/system.json',
16+
JSON.stringify(systemData, null, 2),
17+
);
18+
}
19+
20+
if (require.main === module) {
21+
(async () => {
22+
await main();
23+
})();
24+
}
25+
26+
export default main;

benches/results/gitgc.chart.html

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<meta http-equiv="X-UA-Compatible" />
7+
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.5.1/dist/chart.min.js"></script>
8+
<title>gitgc</title>
9+
<style>
10+
body {
11+
margin: 0;
12+
padding: 0;
13+
background: #ddd;
14+
}
15+
16+
.container {
17+
box-sizing: border-box;
18+
height: 96vh;
19+
width: 96vw;
20+
margin: 2vh 2vw;
21+
resize: both;
22+
overflow: hidden;
23+
padding: 20px;
24+
background: white;
25+
box-shadow: 0 0 15px #aaa;
26+
}
27+
</style>
28+
</head>
29+
<body>
30+
<div class="container">
31+
<canvas id="chart1643349110845" width="16" height="9"></canvas>
32+
</div>
33+
<script>
34+
const format = (num) => {
35+
const [whole, fraction] = String(num).split('.')
36+
const chunked = []
37+
whole
38+
.split('')
39+
.reverse()
40+
.forEach((char, index) => {
41+
if (index % 3 === 0) {
42+
chunked.unshift([char])
43+
} else {
44+
chunked[0].unshift(char)
45+
}
46+
})
47+
48+
const fractionStr = fraction !== undefined ? '.' + fraction : ''
49+
50+
return (
51+
chunked.map((chunk) => chunk.join('')).join(' ') + fractionStr
52+
)
53+
}
54+
const ctx1643349110845 = document
55+
.getElementById('chart1643349110845')
56+
.getContext('2d')
57+
const chart1643349110845 = new Chart(ctx1643349110845, {
58+
type: 'bar',
59+
data: {
60+
labels: ["map","obj","arr","set"],
61+
datasets: [
62+
{
63+
data: [12413,17311,80712,16847],
64+
backgroundColor: ["hsl(18.455999999999996, 85%, 55%)","hsl(25.740000000000002, 85%, 55%)","hsl(120, 85%, 55%)","hsl(25.044000000000008, 85%, 55%)"],
65+
borderColor: ["hsl(18.455999999999996, 85%, 55%)","hsl(25.740000000000002, 85%, 55%)","hsl(120, 85%, 55%)","hsl(25.044000000000008, 85%, 55%)"],
66+
borderWidth: 2,
67+
},
68+
],
69+
},
70+
options: {
71+
maintainAspectRatio: false,
72+
plugins: {
73+
title: {
74+
display: true,
75+
text: 'gitgc',
76+
font: { size: 20 },
77+
padding: 20,
78+
},
79+
legend: {
80+
display: false,
81+
},
82+
tooltip: {
83+
callbacks: {
84+
label: (context) => {
85+
return format(context.parsed.y) + ' ops/s'
86+
},
87+
},
88+
displayColors: false,
89+
backgroundColor: '#222222',
90+
padding: 10,
91+
cornerRadius: 5,
92+
intersect: false,
93+
},
94+
},
95+
scales: {
96+
x: {
97+
grid: {
98+
color: '#888888',
99+
},
100+
},
101+
y: {
102+
title: {
103+
display: true,
104+
text: 'Operations per second',
105+
padding: 10,
106+
},
107+
grid: {
108+
color: '#888888',
109+
},
110+
},
111+
},
112+
},
113+
})
114+
</script>
115+
</body>
116+
</html>

0 commit comments

Comments
 (0)