@effect-bench/node 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,20 +5,25 @@ Benchmarks for [Effect](https://effect.website) code, with JSON output and basel
5
5
  Community project, not affiliated with the Effect team.
6
6
 
7
7
  ```ts
8
- // bench/schema.bench.ts
8
+ // bench/user.bench.ts
9
9
  import { Bench } from '@effect-bench/core'
10
- import { Effect } from 'effect'
10
+ import { Effect, Schema } from 'effect'
11
11
 
12
- export default Bench.suite('workflowCompiler', { layer: NodeRegistry.layer })(
13
- Bench.params('compile', { nodes: [10, 100, 1000] }, {
14
- prepare: ({ nodes }) => Effect.succeed(makeDraft(nodes)), // untimed
15
- run: draft => compile(draft), // timed
16
- }),
12
+ const User = Schema.Struct({ id: Schema.Number, email: Schema.String, tags: Schema.Array(Schema.String) })
13
+ const user = { id: 1, email: 'ada@example.com', tags: ['admin'] }
14
+ const decodeSync = Schema.decodeUnknownSync(User)
15
+ const decodeEffect = Schema.decodeUnknownEffect(User)
16
+
17
+ export default Bench.suite('userSchema')(
17
18
  Bench.group('decode', { baseline: 'sync' })(
18
- Bench.sync('sync', () => decodeSync(lead)),
19
- Bench.make('effect', () => decodeEffect(lead)),
19
+ Bench.sync('sync', () => decodeSync(user)),
20
+ Bench.make('effect', () => decodeEffect(user)),
20
21
  ),
21
- Bench.sync('encode', () => encode(payload), { budget: { p99: '5 millis' } }),
22
+ Bench.params('stringify', { rows: [10, 1000] }, {
23
+ prepare: ({ rows }) => Effect.succeed(Array.from({ length: rows }, () => user)), // untimed
24
+ sync: users => JSON.stringify(users), // timed
25
+ budget: { p99: '5 millis' },
26
+ }),
22
27
  )
23
28
  ```
24
29
 
@@ -37,20 +42,39 @@ effect-bench run --rigorous --forks 8 # more processes for a tighter interval
37
42
  | `Bench.make(name, effect)` | re-runs one Effect value |
38
43
  | `Bench.make(name, ctx => effect)` | builds and runs a fresh Effect per operation |
39
44
  | `Bench.sync(name, ctx => value)` | a plain function |
40
- | `Bench.params(name, matrix, { prepare?, run \| sync })` | one bench per combination, ids like `compile[nodes=100]` |
45
+ | `Bench.params(name, matrix, { prepare?, run \| sync })` | one bench per combination, ids like `stringify[rows=1000]` |
41
46
  | `Bench.group(name, { baseline })(...)` | alternatives, reported as a ratio to the baseline |
47
+ | `Bench.make(name, { prepare?, before?, run })` | `before` builds a fresh input for every operation, untimed |
48
+ | `Bench.throughput(name, { ops, concurrency, prepare?, run })` | `ops` operations at that many fibers, per operation; an array of concurrencies gives ids like `offer[concurrency=16]` |
49
+ | `Bench.stream(name, { prepare?, stream })` | a stream run to the end, per item; metrics `firstItem`, `items` and `peakRss` |
50
+ | `Bench.scenario(name, { prepare?, before?, run, verify? })` | a longer flow, timed once per run; `verify` checks every run |
51
+ | `Bench.phase(name, effect)` | times part of a scenario, reported as `phase:name` (nested as `outer/inner`) |
42
52
 
43
53
  `Bench.suite(name, { layer, setup, ...options })` builds `layer` once per suite and runs `setup` in the suite's scope; its result is the `ctx` each bench receives. Benches can only use services the layer provides — anything else is a type error.
44
54
 
45
- Options (suite or bench): `samples`, `minTime`, `warmup`, `memory` (GC + heap delta per sample), `budget: { p50, p99 }`, `tags`, and `check` (validates one result before timing).
55
+ Options (suite or bench): `samples`, `minTime`, `warmup`, `memory` (GC + heap delta per sample), `budget: { p50, p99, heapDelta }`, `tags`, and `check` (validates one result before timing). A `heapDelta` budget such as `'2 MiB'` turns on `memory`. Scenarios default to 10 samples with no warmup time, streams to 10 samples.
56
+
57
+ ```ts
58
+ Bench.scenario('import', {
59
+ before: () => writeFixture(rows), // untimed, every run
60
+ run: file =>
61
+ Effect.gen(function* () {
62
+ const parsed = yield* Bench.phase('parse', parseCsv(file))
63
+ return yield* Bench.phase('insert', insertRows(parsed))
64
+ }),
65
+ verify: inserted => inserted === rows.length,
66
+ })
67
+ ```
68
+
69
+ Streams and scenarios add a `metrics` record to each result; the key suffix gives the unit (`firstItemNs`, `peakRssBytes`, `phase:parseNs`). `peakRss` is the whole process's resident memory, so earlier benches in the same process count toward it.
46
70
 
47
71
  ## Output
48
72
 
49
73
  `--json` prints one record per line on stdout: a `result` per bench and a final `summary`. Logs go to stderr.
50
74
 
51
75
  ```json
52
- {"type":"result","schemaVersion":1,"status":"ok","id":"leadSchema/decode/effect","stats":{"medianNs":858,"p99Ns":943,"opsPerSec":1165161,...},"comparison":{"baseline":"before","change":0.051,"ci":[0.039,0.058],"verdict":"slower","stale":false},"relative":{"baselineId":"leadSchema/decode/sync","ratio":5.1}}
53
- {"type":"summary","schemaVersion":1,"total":4,"failed":0,"regressions":1,"budgetsExceeded":0,"stale":0,"exitCode":1}
76
+ {"type":"result","schemaVersion":3,"status":"ok","id":"userSchema/decode/effect","stats":{"medianNs":858,"p99Ns":943,"opsPerSec":1165161,...},"comparison":{"baseline":"before","change":0.051,"ci":[0.039,0.058],"verdict":"slower","stale":false},"relative":{"baselineId":"userSchema/decode/sync","ratio":5.1}}
77
+ {"type":"summary","schemaVersion":3,"total":4,"failed":0,"regressions":1,"budgetsExceeded":0,"stale":0,"exitCode":1}
54
78
  ```
55
79
 
56
80
  ## How verdicts work
@@ -1 +1 @@
1
- {"version":3,"file":"NodeBench.d.ts","sourceRoot":"","sources":["../../src/NodeBench.ts"],"names":[],"mappings":"AAMA,OAAO,EAAU,UAAU,EAAE,KAAK,EAAU,IAAI,EAAU,MAAM,QAAQ,CAAA;AAExE,eAAO,MAAM,KAAK,kCAIhB,CAAA;AAYF,eAAO,MAAM,MAAM,kCAGhB,CAAA;AAUH,eAAO,MAAM,WAAW,kCAetB,CAAA;AAIF,eAAO,MAAM,aAAa,sFAwBvB,CAAA;AAEH,eAAO,MAAM,KAAK,aAAa;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,qCAGnE,CAAA"}
1
+ {"version":3,"file":"NodeBench.d.ts","sourceRoot":"","sources":["../../src/NodeBench.ts"],"names":[],"mappings":"AAMA,OAAO,EAAU,UAAU,EAAE,KAAK,EAAU,IAAI,EAAU,MAAM,QAAQ,CAAA;AAExE,eAAO,MAAM,KAAK,kCAIhB,CAAA;AAYF,eAAO,MAAM,MAAM,kCAIhB,CAAA;AAUH,eAAO,MAAM,WAAW,kCAetB,CAAA;AAIF,eAAO,MAAM,aAAa,sFAwBvB,CAAA;AAEH,eAAO,MAAM,KAAK,aAAa;IAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,qCAGnE,CAAA"}
@@ -24,6 +24,7 @@ const exposeGc = () => {
24
24
  export const memory = Layer.sync(BenchMemory, () => ({
25
25
  gc: exposeGc(),
26
26
  heapUsed: () => process.memoryUsage().heapUsed,
27
+ rss: () => process.memoryUsage.rss(),
27
28
  }));
28
29
  const git = (args) => {
29
30
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"NodeBench.js","sourceRoot":"","sources":["../../src/NodeBench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACtH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAExE,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IAC/C,6EAA6E;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACtC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;AAClE,CAAC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,GAA6B,EAAE;IAC9C,IAAI,OAAO,UAAU,CAAC,EAAE,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC,EAAE,CAAA;IAC7D,IAAI,CAAC;QACH,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACjC,OAAO,eAAe,CAAC,IAAI,CAAe,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,EAAE,EAAE,QAAQ,EAAE;IACd,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ;CAC/C,CAAC,CAAC,CAAA;AAEH,MAAM,GAAG,GAAG,CAAC,IAA2B,EAAiB,EAAE;IACzD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;IACzD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;QAC7C,OAAO;YACL,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACrE,cAAc,EAAE,OAAO,CAAC,OAAO;YAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS;YACvC,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAClC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;SACrD,CAAA;IACH,CAAC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,GAAG,kBAAkB,EAAE,EAAE,CAC9D,KAAK,CAAC,MAAM,CACV,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAElH,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,EAAE,CACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC/D,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACvD,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QACxD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACjG,IAAI,EAAE,IAAI,CAAC,EAAE,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;YAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACnD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,4BAA4B,IAAI,IAAI,CAAC,CAAC,CAAC;KAChF,CAAA;AACH,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,GAA4C,EAAE,EAAE,EAAE,CAC7E,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CACvF,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAClC,CAAA"}
1
+ {"version":3,"file":"NodeBench.js","sourceRoot":"","sources":["../../src/NodeBench.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-bench/node",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -9,7 +9,7 @@
9
9
  }
10
10
  },
11
11
  "dependencies": {
12
- "@effect-bench/core": "0.0.1"
12
+ "@effect-bench/core": "0.1.0"
13
13
  },
14
14
  "peerDependencies": {
15
15
  "effect": "^4.1.2",
package/src/NodeBench.ts CHANGED
@@ -25,6 +25,7 @@ const exposeGc = (): (() => void) | undefined => {
25
25
  export const memory = Layer.sync(BenchMemory, () => ({
26
26
  gc: exposeGc(),
27
27
  heapUsed: () => process.memoryUsage().heapUsed,
28
+ rss: () => process.memoryUsage.rss(),
28
29
  }))
29
30
 
30
31
  const git = (args: ReadonlyArray<string>): string | null => {