So I attempted to measure the memory overhead of a Stackless tasklet, with 'Recipe 286222' from ActiveState's Cookbook:<br>(on Linux 2.6.27-11-generic SMP x86_64)<br><br>def empty(): pass<br>b4 = memory()<br>print "before:", b4<br>
t = stackless.tasklet(empty)()<br>after = memory()<br>print "after:", after<br>print "difference:", memory(b4)<br>
<br>Which yields:<br> difference: 4096.0<br><br>And a slightly modified version of Peter's test on my platform:<br><br>collectgarbage"collect"<br>local function F()<br>end<br>before = (collectgarbage"count" * 1024)<br>
local C = coroutine.wrap(F)<br>after = (collectgarbage"count" * 1024)<br>print(after - before)<br><br>Yields:<br> 1280<br><br>But perhaps a more reasonable question is, "how many licks does it take to get to the center of a tootsie roll pop?"<br>
<br><br><div class="gmail_quote">On Fri, Apr 24, 2009 at 9:12 AM, Phoenix Sol <span dir="ltr"><<a href="mailto:phoenix@burninglabs.com">phoenix@burninglabs.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Very nice, thanks Peter!<div><div></div><div class="h5"><br><br><div class="gmail_quote">On Fri, Apr 24, 2009 at 9:08 AM, Peter Cawley <span dir="ltr"><<a href="mailto:lua@corsix.org" target="_blank">lua@corsix.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
A coroutine appears to cost around a kilobyte (20695 - 19601 = 1094 bytes):<br>
<br>
collectgarbage"collect"<br>
print(collectgarbage"count" * 1024) --> 19559<br>
local function F()<br>
end<br>
print(collectgarbage"count" * 1024) --> 19601<br>
local C = coroutine.wrap(F)<br>
print(collectgarbage"count" * 1024) --> 20695<br>
<br>
Test done on Win32/Vista, self-compiled Lua (using Visual Studio<br>
2008), source code executed all-at-once from a file rather than from<br>
an interactive terminal.<br>
<div><div></div><div><br>
On Fri, Apr 24, 2009 at 4:52 PM, Phoenix Sol <<a href="mailto:phoenix@burninglabs.com" target="_blank">phoenix@burninglabs.com</a>> wrote:<br>
> And is there a known overhead for a lua coro? (Maybe it would be more fair<br>
> to compare a tasklet to a 'Coco' coroutine... but still I wonder what the<br>
> overhead of wrapping a function with coroutine.wrap() is...)<br>
><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>