On Jun 5, 2013, at 8:26 AM, Aleksey Shipilev wrote: > Aleksey :
Sorry: I had not finished my first coffee yet. > >>> b) the annotations you are using on each method, can flow up to >>> class-level annotation, and will be inherited by all the @GMB methods; >> >> I was not aware of this. > > Yes, and with the daizy-fresh JMH, it is even possible to move the > remaining data upwards to the class level: > http://mail.openjdk.java.net/pipermail/jmh-dev/2013-June/000074.html > >>> c) it is a good idea to initialize the State fields within the @Setup >>> method, because we guarantee correct initialization JMM-wise (try to run >>> your benchmark on non-x86 hardware, and you can occasionally see the >>> NPEs, because genericFactor1/2 might be null; you can also make the same >>> effect with "final" on fields, but that wouldn't be the generic case). >> >> That is good to know also. I read about State Fixtures but did not know >> of this behavior. > > I take that back, the JMH samples are correct. JMH will initialize the > states with the worker threads, and publish it properly for you. You can > keep the init the way you have it now. The only culprit is that if State > is getting reused between the benchmark runs, it is a good idea to > re-initialize it with @Setup. But, since BigIntegers are "immutable", > you don't actually care. Thanks for the further clarifications. Brian
