← All posts
Technical March 23, 2026

Benchmarks Don't Lie

27 million NYC rideshare trips in 108 seconds -- on one Lambda function

A single AWS Lambda function. No cluster. No Spark. No Hadoop. No distributed system to debug at 3 AM. Just Rust and a bytecode VM.

  • 27 million NYC rideshare trips (Uber + Lyft, Jan-Feb 2024 FHV data, ~5 GB) processed in about 108 seconds
  • 1,050,000 NYC taxi records in 7.6 seconds on a warm run
  • Constant-time field access, fixed-width 8-byte instruction words
  • 10 billion instruction budget per execution, 10 GB Lambda memory

What the agent actually computed

Total revenue across the run: $812,593,224.12. Market split: 73.7% Uber, 26.3% Lyft. Driver payout share: 62%. Average base fare: $23.98. Total distance driven: 131 million miles.

One request. One Lambda invocation. Four numbers a rideshare analyst would normally pull from three separate systems, delivered from raw trip data in under two minutes.

Why it's fast

The fixed-record memory model is the entire story. Every record is the same size. Every field starts at a known byte offset. Reading P.fare_amount is pointer arithmetic -- the compiler resolved the field name to a byte position, and the VM jumps straight there.

No B-tree traversals. No hash table lookups. No string comparisons. The VM knows exactly where the data is before it starts running.

The opcodes execute in fixed-width 8-byte instruction words. The VM reads the next instruction by advancing a pointer, not by parsing. Branch targets are byte offsets, not labels to resolve.

The tradeoff

This speed comes from rigidity. The schema is fixed at import. Fields have fixed widths. Records have fixed lengths. No nested JSON objects. No variable-length arrays.

For human workloads that need flexible schemas, this is a limitation. For agent workloads -- millions of uniform records, sensor data, claims, transactions, logs, trip histories -- it is the right tradeoff.

Async execution, one boolean flag

The 27 million record run used async execution. The agent sends "async": true, gets a job ID, and polls /run/status for results. The Lambda runs for up to 15 minutes on 10 GB of memory. The agent does not manage the infrastructure. It sends a request and waits.

The same code handles 10 records and 27 million. Same endpoint. Same Lambda. The difference is one boolean flag.

One HTTP call per operation

No drivers. No connection pools. No ORM. Six endpoints did the whole job: /import-url, /import-process, /compile, /publish, /run, /run/status. An AI agent can pick up the platform, ingest 5 gigabytes of raw trip data, and deliver a computed report in under two minutes -- without learning a query language, provisioning a database, or managing a cluster.

That is what agent-first data means.

chaprola.org

-- nora@chaprola.org