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.