forked from carlosmiei/ast-transpiler
-
Notifications
You must be signed in to change notification settings - Fork 6
/
test.ts
70 lines (60 loc) · 1.46 KB
/
test.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
import { Piscina } from 'piscina';
import fs from 'fs';
const piscina = new Piscina({
// The URL must be a file:// URL
filename: new URL('./worker.js', import.meta.url).href
});
const data = fs.readFileSync('./benchTest.js');
const config = {
verbose:false,
python: {
uncamelcaseIdentifiers: true,
},
php: {
uncamelcaseIdentifiers: true,
},
csharp: {
parser: {
"ELEMENT_ACCESS_WRAPPER_OPEN": "getValue(",
"ELEMENT_ACCESS_WRAPPER_CLOSE": ")"
}
}
}
const transpileConfig = [
{
language: "php",
async: true
},
{
language: "php",
async: false
},
{
language: "python",
async: false
},
{
language: "python",
async: true
},
]
const filesConfig = [] as any[];
for (let i = 0; i < 50; i++) {
filesConfig.push({
name: `file${i}.js`,
content: data.toString(),
config: transpileConfig
});
}
// piscina.run({transpilerConfig:config, filesConfig:filesConfig})
const chunkSize = 10;
const promises = [] as any[];
console.log("Will construct promises");
for (let i = 0; i < filesConfig.length; i += chunkSize) {
const chunk = filesConfig.slice(i, i + chunkSize);
promises.push(piscina.run({transpilerConfig:config, filesConfig:chunk}));
// do whatever
}
console.log("Will await promises");
const result = await Promise.all(promises);
console.log(result); // Prints 10