Re:Co-routines as an alternative to state machines
by jrockway on Sunday August 30, 2009 @10:50AM
(#794535)
With empty suspended coros, we use about 169M for 300,000 of them. So that's about .5K per coroutine.
In Haskell, 500,000 threads waiting for an empty mvar used about 1.4G of RAM. But if they just spin forever (foo = foo), not waiting for anything, then it uses 129M for 500,000 threads; .2K each.
So really, coroutines are not costly at all. Most of the price you pay you would have to pay anyway. The overhead of the coroutine itself is tiny.
Re:Co-routines as an alternative to state machines
by silentbicycle on Sunday August 30, 2009 @11:41AM
(#794588)
Good to know, thanks for the quick response.
Note that this doesn't include memory for the IO connection, but the original question was about the space overhead of coroutines themselves. How much do Perl and Haskell use without the IO handle?
* On an AMD64 running OpenBSD 4.6. On an i386 (32-bit) system, it took 142 MB.