I
On Mar 19 2014, at 15:01 , Brian Burkhalter <brian.burkhal...@oracle.com> wrote:

> 
> On Mar 14, 2014, at 7:17 AM, Brian Burkhalter <brian.burkhal...@oracle.com> 
> wrote:
> 
>> On Mar 14, 2014, at 3:39 AM, Peter Levart wrote:
>> 
>>> But in general it would be better to just use "ThreadLocalRandom.current()" 
>>> everywhere you use "rnd" variable. This is precisely it's purpose - a 
>>> random number generator that is never contended. The overhead of 
>>> ThreadLocalRandom.current() call is hardly measurable by itself.
>> 
>> I'll update that and re-run some of the benchmarks later.
> 
> Following up on the content above and this earlier message in the thread:
> 
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2014-March/025676.html
> 
> I have posted a revised patch (NB: I know lines 2897-2906 should be elsewhere)
> 
> http://cr.openjdk.java.net/~bpb/6375303/webrev.01/
> 
> and updated benchmark source (using only ThreadLocalRandom.current())
> 
> http://cr.openjdk.java.net/~bpb/6375303/Bench6375303.java
> 
> and updated benchmark  results for three different variations
> 
> http://cr.openjdk.java.net/~bpb/6375303/6375303-bench-2.html
> 
> This version of toString() is from Peter and dispenses with the volatile 
> qualifier on stringCache. At least on my system, there is no statistically 
> significant micro-performance difference among the three versions tested, 
> viz., baseline, toString() change only, toString() change plus other cleanup.

Since the Unsafe.getObjectVolatile() allows use of volatile semantics without 
having to declare the field volatile I think this is a better idiom than what I 
had previously suggested. Hopefully this is a pattern we can use elsewhere.

Are the java.util.concurrent.atomic imports still needed?

I have not reviewed the other changes.

Mike

Reply via email to