Skip to content

Chore: Benchmaxxing sideffect workflow overhead#6

Draft
eersnington wants to merge 1 commit into
mainfrom
chore/benchmark-workflow-overhead
Draft

Chore: Benchmaxxing sideffect workflow overhead#6
eersnington wants to merge 1 commit into
mainfrom
chore/benchmark-workflow-overhead

Conversation

@eersnington

Copy link
Copy Markdown
Owner

Add workflow overhead benchmarks

Summary

  • Add a local benchmark for Sideffect workflow step overhead
  • Add coverage for Effect-returning step bodies and rollback handlers
  • Cache schema decoder adapters internally without changing the public API

Benchmark Results

Command:

bun run --cwd packages/sideffect bench:workflow-overhead --steps=100000 --samples=3

Results:

case median ms delta vs native us/step
native-fake-baseline 3.696 3.696 0.037
sideffect-direct-struct 60.449 56.753 0.604
sideffect-promise-step 59.496 55.799 0.595
sideffect-effect-succeed-step 73.310 69.613 0.733
sideffect-effect-fn-untraced-step 85.232 81.535 0.852
sideffect-effect-fn-traced-step 219.659 215.962 2.197
sideffect-effect-workflow 61.149 57.453 0.611
sideffect-effect-per-step-wrapper 106.180 102.484 1.062

Notes

  • Plain Sideffect struct steps added about 56.8ms over the fake native baseline at 100k local steps.
  • Returning Effect.succeed(...) from every step added about 12.9ms over plain Sideffect at 100k steps.
  • Named traced Effect.fn("...") in the hot step path was the slowest case at ~220ms.
  • These are local fake-step measurements, not Cloudflare production latency numbers.

Verification

  • bun run --cwd packages/sideffect bench:workflow-overhead --steps=1000,10000 --samples=3
  • bun run --cwd packages/sideffect bench:workflow-overhead --steps=100000 --samples=3
  • bun run --cwd packages/sideffect bench:workflow-overhead --steps=1000 --samples=1
  • bun run --cwd packages/sideffect test
  • bun run --cwd packages/sideffect check
  • bun run --cwd packages/sideffect build
  • bun run check
  • bun run test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant