Primitive boolean array packing
Roman Kennke
rkennke at redhat.com
Sun Oct 7 11:51:38 UTC 2018
>>> I didn't search much if such experiments have already been
>>> accomplished, but I'd like to take the temperature of this feature as
>>> completing the implementation represents a significant amount of work.
>>> Is this something that is worth exploring?
>>
>> The most problematic part, in my mind, is that JMM requires the absence of word tearing for array
>> element accesses. See here: https://shipilev.net/blog/2014/jmm-pragmatics/#_part_ii_word_tearing
>>
>> With densely packed boolean[], you'd need to convert plain stores to locked/CAS-loops to support
>> this, I think, which raises all sorts of performance questions. Choosing between boolean[] and
>> BitSet is basically choosing between stricter/relaxed concurrency guarantees vs dense/sparse footprint.
>
> But you get a lot of performance conflicts between cores having to share
> cache lines anyway. Maybe we should do some performance experiments: we
> wouldn't need to do all of the C2 work, just write a little C++ and asm
> code and measure what happens under some plausible conditions. We'd have
> to try both contended and uncontended situations.
Are boolean arrays even common enough to make a difference?
Roman
More information about the jdk-dev
mailing list