On Jan-09, Leopold Toetsch wrote:
> I have here now ~15 files different to CVS, which I would like to sync 
> in either direction for easier future changes.
> So the question is, should I checked it in / partially / forget it.
> 
> Changes are:
> - SPMC (small or scalar PMC) with half the size of a PMC, no promotion 
> or whatever to a PMC, disabled with one define in pmc.c
> - pool flags with aligned pools, disabled in pobj.h
> - key.c and list.c flags cleanup
> - mark constant PMCs in DOD[1], hash undef PMC changes
> - minor cleanups
> 
> The first two are pretty much encapsulated and disabled by default. They 
> can be easily removed at any time. SPMCs could get really functional 
> after vtable var/value changes.

My personal opinion, worth the paper it's printed on: all of those
sound very good except for the first, which makes me nervous. It adds
a lot of complexity if those PMCs ever need to be promoted, and I'm
not clear on the advantages. The space advantage is obvious, but I
would guess not all that large. I don't understand the cache advantage
-- is it perhaps doubling the usable size of the cache because the
larger PMCs are all aligned similarly, and so half the cache is never
used? If so, would staggering the alignment of the PMCs be enough to
get the same gain (possibly with reordering the fields)? For example,
make every other PMC allocated fall on a different alignment. I
haven't been paying much attention recently, so I'm probably just
being naive and dumb, but my intuition is concerned about adding this
complexity when we're not totally confident of what's going on. Have
you tried running cachegrind or something similar on the two versions?

Reply via email to