# Performance

> How fast threads is: measured numbers, what profiling found, and its benchmark history.

[magmalake](https://magmalake.dev/) [threads](https://magmalake.dev/s/threads)

###  Primitives

| Operation | magmalake | Reference |
| --- | --- | --- |
| threads: spawn and join 500 sequential pthread round trips | ≈11 µs warm | 15–20 µs for the first threads a process spawns, so a pool pays that once rather than per task |
| threads: parallel\_for over 100M Int64 1 / 2 / 4 / 8 / 10 workers | 2.3× at four workers, 3.5× at ten | a parallel memcpy on the same machine reaches 3.9× at two workers and never improves — that is the memory-bandwidth ceiling |

scroll the table sideways →

Apple M4 — ten cores, four of them performance — macOS, stable Mojo 1.0.0, with nothing else building on the machine. Measured on 5 September 2026; the Iceberg rows on 15 September, the boundary rows on 19 September. [How these were measured](https://magmalake.dev/performance#method).

### Threads, for now, come from a tin

Mojo's standard library currently has no threading. `parallelize` was removed and there is no thread pool reachable from user code, so every number on this site that mentions more than one core goes through threads.mojo, which wraps pthreads directly via `external_call`.

It is inspired by and distilled from [flare](https://github.com/ehsanmok/flare) — Ehsan M. Kermani's project, MIT-licensed — which worked out how to get real OS threads out of Mojo in the first place. threads.mojo keeps the parts a data stack needs and drops the rest.

It is explicitly a stopgap. When the language ships its own threading, this tin should stop existing.

[A magmalake project](https://magmalake.dev/)

Apache 2.0 · © 2026 Marius Seritan
