Same data, six engines

Each engine builds the same seeded dataset of sales rows, then filters, groups, sorts and summarises it. Results are checked against each other, so you can see who is fastest and that they all got the same answer.

Rows
Engines

Total time

Engines run one after another so they never compete for CPU. Lower is better.

By task

How it works

Every row has a category (20), a region (5), a value between 0 and 1000, and a quantity from 1 to 10. Values come from the mulberry32 generator with seed 42, implemented identically in each language, so every engine sees the exact same numbers.

Rust
Release build, columnar Vecs, plain loops.
JavaScript
Typed arrays on Node.js, and the same file running in your own browser.
Python + pandas
Vectorised NumPy generation and pandas DataFrame operations.
Python + Polars
Everything in Polars, including generating the data with its own expression engine on Arrow memory. Limited to one thread.
Python (pure)
Plain lists and loops, no libraries.

Each server container is limited to one CPU core. Timings exclude network transfer. Browser results depend on your device.