Hacker News new | ask | show | jobs
by continuations 1951 days ago
> A context switch takes around 0.2µs between async tasks, versus 1.7µs between kernel threads. But this advantage goes away if the context switch is due to I/O readiness: both converge to 1.7µs.

This is a big surprise.

If you look at the Techempower web benchmark [1], the performance of actix-web is about 20x higher than that of Rocket.

The common explanation is that actix-web is async and hence much faster than Rocket which relies on kernel context switching.

But if Rust async and kernel thread has the same switch time as shown by this benchmark, then why is actix-web so much faster than Rocket?

[1] https://www.techempower.com/benchmarks/#section=data-r20&hw=...

1 comments

Rocket's low performance could well be because the threadpool and DB connection pool is undersized: https://github.com/TechEmpower/FrameworkBenchmarks/blob/b891...