Array append performance revisited

dsimcha dsimcha at yahoo.com
Tue Sep 30 16:28:05 PDT 2008


== Quote from dsimcha (dsimcha at yahoo.com)'s article
> A while back, there were some discussions about capacity fields, etc. on this
> forum.  I was looking at the GC implementation, and, if we want to speed up
> array appends in a dead simple way without really much, I think we can gain a
> lot by simply making the size cache in gcx.d thread-local in D2.  When
> appending to arrays in multiple threads, not only is one paying for frequent
> size cache lookups, but one is also having all of their threads block on this
> synchronization.
> We have:
> struct Gcx {
>     void *p_cache;
>     size_t size_cache;
> }
> Would it help to just make these two variables thread-local?

Never mind, this is a *very* bad idea for obvious reasons.  When I wrote the
initial post, I only thought of the case where each array that's being appended to
is, for all practical purposes, owned by a single thread.



More information about the Digitalmars-d mailing list