import { readFileSync } from "fs"; import { dirname } from "path"; import { fileURLToPath } from "url"; import { bench, run, group } from "mitata"; import { createRequire } from "module"; const require = createRequire(import.meta.url); const esbuild_ = require("esbuild/lib/main"); const swc_ = require("@swc/core"); const babel_ = require("@babel/core"); const code = readFileSync(dirname(fileURLToPath(import.meta.url)) + "/../../src/test/fixtures/simple.jsx", "utf-8"); async function getWithName(name) { let transformSync; let transform; let opts; if (name === "bun") { const transpiler = new Bun.Transpiler({ loader: "jsx" }); transformSync = transpiler.transformSync.bind(transpiler); transform = transpiler.transform.bind(transpiler); opts = "jsx"; } else if (name === "esbuild") { try { transformSync = esbuild_.transformSync; transform = esbuild_.transform; opts = { loader: "jsx" }; } catch (exception) { throw exception; } } else if (name === "swc") { try { transformSync = swc_.transformSync; transform = swc_.transform; opts = { sourceMaps: false, inlineSourcesContent: false, jsc: { target: "es2022", parser: { jsx: true, }, }, }; } catch (exception) { throw exception; } } else if (name === "babel") { try { transformSync = babel_.transformSync; transform = babel_.transform; opts = { sourceMaps: false, presets: ["@babel/preset-react"], }; } catch (exception) { throw exception; } } return { transformSync, transform, opts, name, }; } const bun = process.isBun ? await getWithName("bun") : null; const esbuild = await getWithName("esbuild"); const swc = await getWithName("swc"); const babel = await getWithName("babel"); const transpilers = [bun, esbuild, swc, babel].filter(Boolean); group("transformSync (" + ((code.length / 1024) | 0) + " KB jsx file)", () => { for (let { name, transformSync, opts } of transpilers) { bench(name, () => { transformSync(code, opts); }); } }); group("tranform x 5", () => { for (let { name, transform, opts } of transpilers) { bench(name, async () => { return Promise.all([ transform(code, opts), transform(code + "\n", opts), transform("\n" + code + "\n", opts), transform("\n" + code + "\n\n", opts), transform("\n\n" + code + "\n\n", opts), ]); }); } }); await run(); value='release/v2'>release/v2 Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2017-07-29v0.2.0v0.2.0Gravatar Jorge Aparicio 5-8/+58
2017-07-29update examplesrelease/v0.1Gravatar Jorge Aparicio 18-87/+206
2017-07-27update examplesGravatar Jorge Aparicio 15-294/+198
2017-07-27`Send`-ness check is now in rtfm-coreGravatar Jorge Aparicio 3-23/+10
2017-07-27make task.$T.path mandatoryGravatar Jorge Aparicio 2-56/+30
2017-07-27make task.$T.enabled optionalGravatar Jorge Aparicio 17-91/+111
and move the logic that differentiates interrupts from exceptions from the crate to the procedural macro logic
2017-07-27fix yet another warning on ARMv6-MGravatar Jorge Aparicio 1-3/+3
2017-07-27travis: install linkerGravatar Jorge Aparicio 3-3/+31
2017-07-27fix warning on ARMv6-MGravatar Jorge Aparicio 1-1/+2
2017-07-27don't generate empty modulesGravatar Jorge Aparicio 1-11/+16
2017-07-27make task.$T.priority optionalGravatar Jorge Aparicio 1-20/+8
default the value to 1 if omitted
2017-07-27update tests and examplesGravatar Jorge Aparicio 17-230/+68
with task! gone 3 types of errors / gotchas have been eliminated :tada:
2017-07-27refactor Resource / Threshold into its own crate, drop task!, tweak rtfm::atomicGravatar Jorge Aparicio 3-154/+47
task! can be re-added in a backward compatible fashion and I'd like to not have two ways to assign a task handler to an interrupt / exception in the first release. rtfm::atomic now uses the `Threshold` token instead of the `CriticalSection` token. This reduces overhead by dropping the "are interrupts enabled?" check.
2017-07-26provide a Threshold token even when all resources are locklessGravatar Jorge Aparicio 1-7/+5
because the token will always be required for calling generic functions
2017-07-26fix around owned idle resourceGravatar Jorge Aparicio 1-1/+5
2017-07-25inline claimGravatar Jorge Aparicio 1-0/+1
because it's needed for proper optimization / inlining
2017-07-25fix errors around the use of `super` in relative pathsGravatar Jorge Aparicio 1-4/+4
2017-07-24more "hygiene"Gravatar Jorge Aparicio 1-8/+12
prepend an underscore to the name of the statics generated in the root of the crate