When join! is slower than await'ing on multiple Tokio tasks. How so?

Yes, yes. I'm quite aware of that. If I wanted performance in filo() I would not be doing this. Maybe something more like my million digit Fibonacci number calculation: GitHub - ZiCog/fibo_4784969: The million digit Fibonacci number challenge. Calculate fibo(4784969) in various languages..

Indeed that is the point, I was wanting to compare the overheads of async tasks vs regular threads. And the reclusive fido() came to mind as an interesting way to spawn 100,000 of threads.

I've always maintained that regular threads are what you need for compute performance through parallelism when you ave multiple cores. While async is what you need for lots of tasks that are waiting on events. "Sync for work, async for waiting" as it were. In this fib() case we don't care about the actual work performance but we do create thousands of tasks that have very little compute and spend most of their time waiting. A good test no?

You are right, I have complicated my life by trying this on different machines with different OS, with vastly different amounts of memory and so on.

I'm going to play with it some more...