Skip to content

Benchmarks

All measurements are dated, environment-specific observations recorded on this page (website/guide/benchmarks.md) per the benchmark recording rule. They are not guarantees for other environments.

The table below is historical evidence from the retired Apps Script/Gateway era: those runs measured the signed Apps Script gateway and its observation lock, which no longer exist. The rows below carry no recorded date/branch/command and are unverified against the current provider — treat them as historical notes only. They are not comparable to the current direct Google Sheets API provider and must not be presented as its performance.

Live verification of the current direct provider is opt-in: it requires a service account (GOOGLE_APPLICATION_CREDENTIALS), a spreadsheet shared with it, and external quota, and it is never part of the normal test suite. Current direct-provider benchmark evidence is limited: there is no maintained, dated steady-state measurement of the direct provider as of this writing, so any throughput/latency claim beyond these historical notes would be unsupported.

Key findings (historical)

ObservationResultCaveat
Raw Apps Script setValues() (100 rows × 6 cols)~374 ms steady-state (~267 rows/s)isolated write, no safety machinery
Progressive operational run1,110 rows in ~36.9 s (~30.1 rows/s)remote worker→Gateway path dominated
Redeployed signed no-op Gateway baselinep50 1.956 s / p95 4.511 s over 100 requeststransport-only probe
Local SQLite CRUD (clean mixed workload)ms-scale, zero failuresGateway p95 was ~33 s in the same run

The evidence shows the bottleneck is not raw cell writes — it is dispatch/runtime overhead, locks, metadata lookups, receipts, postconditions, and recovery. The 2026-08-03 clean smoke also showed the outbox not converging while the local API stayed healthy, which is why the internal consistency model and the architecture treat local serving and remote convergence as separate concerns.

Benchmark recording rule

Any new benchmark must be recorded durably before it is considered complete: date and branch, exact command, dataset size and scenario, environment, a result table with a separate no-setup/steady-state column, comparison with the previous relevant benchmark, and known caveats. See CONTRIBUTING.md for the rule.

MIT Licensed