mirror of
https://github.com/swc-project/swc.git
synced 2024-12-22 21:21:31 +03:00
65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
const Benchmark = require("benchmark");
|
|
const acorn = require("acorn");
|
|
const jsx = require("acorn-jsx");
|
|
const parser = acorn.Parser.extend(jsx());
|
|
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const src = fs.readFileSync(path.join(process.argv[2], "input.js"), "utf8");
|
|
const jsonStr = fs.readFileSync(
|
|
path.join(process.argv[2], "output.json"),
|
|
"utf8"
|
|
);
|
|
|
|
{
|
|
parser.parse(src, {
|
|
ecmaVersion: 2020,
|
|
ranges: true,
|
|
allowHashBang: true,
|
|
sourceType: "module",
|
|
});
|
|
}
|
|
const suite = new Benchmark.Suite();
|
|
|
|
suite
|
|
.add("acorn", () => {
|
|
parser.parse(src, {
|
|
ecmaVersion: 2020,
|
|
ranges: true,
|
|
allowHashBang: true,
|
|
sourceType: "module",
|
|
});
|
|
})
|
|
.add({
|
|
name: "acorn-real",
|
|
fn: (deferred) => {
|
|
fs.promises
|
|
.readFile(path.join(process.argv[2], "input.js"), "utf8")
|
|
.then((src) => {
|
|
parser.parse(src, {
|
|
ecmaVersion: 2020,
|
|
ranges: true,
|
|
allowHashBang: true,
|
|
sourceType: "module",
|
|
});
|
|
deferred.resolve();
|
|
});
|
|
},
|
|
defer: true,
|
|
async: true,
|
|
queued: true,
|
|
})
|
|
.add("json", () => {
|
|
JSON.parse(jsonStr);
|
|
})
|
|
.on("cycle", function (event) {
|
|
console.log(String(event.target));
|
|
})
|
|
.on("complete", function () {
|
|
console.log("Fastest is " + this.filter("fastest").map("name"));
|
|
})
|
|
.run({
|
|
async: true,
|
|
});
|