/js-reactivity-benchmark

Benchmark comparing different standalone JS reactivity / signals frameworks.

Primary LanguageTypeScript

JS Reactivity Benchmark

$ pnpm bench

Features

  • Configurable dependency graph: graph shape, density, read rate are all adjustable
  • Easily add new benchmarks and frameworks
  • Supports dynamic reactive nodes
  • Framework agnostic. Simple API to test new reactive frameworks
  • Forces garbage collection between each test
  • Outputs a csv file for easy integration with other tools

Current reactivity benchmarks (S.js, CellX) are focused on creation time, and update time for a static graph. Additionally, existing benchmarks aren't very configurable, and don't test for dynamic dependencies. We've created a new benchmark that allows library authors to compare their frameworks against each other, and against the existing benchmarks, as well as against a new configurable benchmark with dynamically changing sources.

We're also working on enabling consistent logging and efficient tracking of GC time across all benchmarks.

Frameworks

Results

Average benchmark results across frameworks (lower times are better)

These results were last updated September 2024 on an M3 Macbook Pro using Node.js v22.4.1.