[plt-scheme] From hash-table to generator
Eli Barzilay skrev:
> On May 11, Jens Axel Søgaard wrote:
>> In my sample application I get:
>>
>> Above version: cpu time: 23594 real time: 25469 gc time: 3389
>> Call/cc version: cpu time: 18125 real time: 18344 gc time: 11515
>> List version: cpu time: 1843 real time: 1843 gc time: 578
>>
>> The conclusion must therefore be, that you need to
>> implement hash-table->generator as a primitive, if you want
>> to avoid Unnecessary allocation.
>
> These numbers show that context switches are expensive -- and the ones
> involved with threads are a little more expensive than those with
> continuation. Allocating a list removes such switching, but it leads
> to allocation (which is not a big deal, but my guess is that you're
> worried about really big tables).
Indeed.
> So how about a hybrid approach: use either the continuation or the
> thread+channel code, but pass along blocks of N values from the table.
> This way you're protected from really big tables, and with something
> like N=1000 the context switching would be reduced to a minimum, and
> the run time would be very close to what you'd get from a primitive
> iterator.
Excellent suggestion.
Thanks,
--
Jens Axel Søgaard