Latest results
Most recent Melon-db vs WatermelonDB benchmark parity table from the committed harness artifact.
Last updated via bench:compare:docs. Ratio is melon-node ÷ watermelon (< 1 means Melon-db faster).
10,000 rows
| Scenario | melon-node | watermelon | Ratio | Winner |
|---|---|---|---|---|
| Row insert | 97.42 ms | 2460.70 ms | 0.0396 | melon |
| Batch insert | 36.08 ms | 46.58 ms | 0.7746 | melon |
| Filtered query | 0.70 ms | 1.40 ms | 0.4987 | melon |
| Count query | 0.38 ms | 0.41 ms | 0.9425 | melon |
| Find by id | 0.04 ms | 0.04 ms | 0.8726 | tie |
melon-bun (reference)
Same scenarios on bun:sqlite — not compared to WatermelonDB.
| Scenario | Duration |
|---|---|
| Row insert | 47.95 ms |
| Filtered query | 0.90 ms |
| Count query | 0.26 ms |
| Find by id | 0.03 ms |
| Batch insert | 18.35 ms |
The table above is generated from apps/docs/src/data/bench-compare-latest.json. Refresh it after benchmark changes:
COMPARE_RUNNER_BIN=node bun run bench:compare:docsCommit the updated JSON with your PR when timings should be reflected on the docs site.
React Native sample
On-device benchmarks from playground-rn-dev (development build with @melon-db/db-sqlite-native and WatermelonDB via @morrowdigital/watermelondb-expo-plugin).
Melon-db (jsi-sync) vs WatermelonDB
Captured · Device: iOS (playground-rn-dev dev client) (ios). Ratio is melon-jsi-sync ÷ watermelon (< 1 means Melon-db faster).
10,000 rows · melon-jsi-sync vs watermelon
| Scenario | melon-jsi-sync | watermelon | Ratio | Winner |
|---|---|---|---|---|
| Row insert | 959.88 ms | 744.80 ms | 1.2888 | watermelon |
| Batch insert | 494.39 ms | 93.08 ms | 5.3117 | watermelon |
| Filtered query | 0.87 ms | 2.60 ms | 0.3339 | melon |
| Count query | 0.20 ms | 0.60 ms | 0.3243 | melon |
| Find by id | 0.10 ms | 0.15 ms | 0.6705 | melon |
jsi-sync vs turbo
Captured via playground-rn-dev manual run. Device: iOS (playground-rn-dev dev client) (ios). Ratio is jsi-sync ÷ turbo (< 1 means jsi-sync faster).
iOS dev client: jsi-sync + Watermelon @ 10k (melonVsWdb) and jsi-sync + turbo @ 10k (report).
10,000 rows · jsi-sync vs turbo
| Scenario | jsi-sync | turbo | Ratio | Winner |
|---|---|---|---|---|
| Row insert | 905.34 ms | 2259.54 ms | 0.4007 | jsi-sync |
| Batch insert | 449.82 ms | 1680.55 ms | 0.2677 | jsi-sync |
| Filtered query | 0.72 ms | 0.71 ms | 1.0164 | turbo |
| Count query | 0.13 ms | 0.14 ms | 0.9322 | tie |
| Find by id | 0.04 ms | 0.07 ms | 0.5264 | jsi-sync |
The table is generated from apps/docs/src/data/bench-rn-latest.json. To refresh after a new device run:
- In
apps/playground-rn-dev, open Benchmarks and run jsi-sync + Watermelon at 10k (or 1k for smoke). - Tap Share JSON report and merge
melonVsWdb(and optionallyreportfor jsi vs turbo) plusgeneratedAt/deviceintobench-rn-latest.json. - Commit the updated JSON with your PR so the docs site picks up the new timings.
Same scenarios as the Node harness: row insert, batch insert, filtered query, count, and find-by-id. Ratio for Melon-db vs WDB is melonMs / watermelonMs (< 1 means Melon-db faster).
