1.0.6 âĒ Published 2 years ago
@hazae41/deimos v1.0.6
npm i @hazae41/deimos
src/node/bench/xor_mod.bench.ts
cpu: Apple M1 Max
runtime: node v18.12.1 (arm64-darwin)
âââââââââââŽâââââââââââââââââââŽââââââââââââââŽââââââââââââââ
â (index) â average â minimum â maximum â
âââââââââââžâââââââââââââââââââžââââââââââââââžââââââââââââââĪ
â wasm â '880.48 ns/iter' â '750.00 ns' â '154.00 Ξs' â
â js â '17.71 Ξs/iter' â '17.42 Ξs' â '610.67 Ξs' â
âââââââââââīâââââââââââââââââââīââââââââââââââīââââââââââââââ
Summary
- wasm is 20.11x faster than js
Philosophy ð§
Deimos aims to be minimalist and to always work no matter the:
- runtime (Node, Deno, browser)
- module resolution (ESM, CommonJS)
- language (TypeScript, JavaScript)
- bundler (Rollup, Vite)
It's just a library you can import everywhere! That's it, no CLI, no configuration file, just JavaScript.
Features ðĨ
Current features
- 100% TypeScript and ESM
- No external dependency
- Runnable in the browser
Usage ð
import { bench } from "@hazae41/deimos"
const a = await bench("my library", async () => {
await compute()
})
const b = await bench("some other library", async () => {
await compute2()
})
console.log(`${a.message} is ${a.ratio(b)} times faster than ${b.message}`)
ts-node --esm ./bench.ts
Setting up ð§
Most setups will just need a custom entry point that imports all your benchs, that you either run as-is using ts-node
, or that you transpile using your favorite bundler.
For example, the entry point index.bench.ts
imports:
some-module/index.bench.ts
, which imports:some-module/some-file.bench.ts
some-module/some-other-file.bench.ts
some-other-module/index.bench.ts
, which imports:some-other-module/some-file.bench.ts
some-other-module/some-other-file.bench.ts
You can see an example on this repository, all benchs are imported in src/index.bench.ts
, then we use Rollup to transpile it into dist/test/index.bench.cjs
, which we then run using Node with node ./dist/test/index.bench.cjs
.
Running ðïļ
Using a bundler
node ./dist/test/index.bench.cjs
Using ts-node with ESM
ts-node --esm ./src/index.bench.ts
Using ts-node with ESM and ttypescript
ts-node --esm --compiler ttypescript ./src/index.bench.ts
Using dynamic import
await import("index.bench.ts")