Boolean valueOf instead of new Boolean
Otávio Gonçalves de Santana
otaviopolianasantana at gmail.com
Tue May 27 17:16:33 UTC 2014
Can anyone help me as sponsor?
On May 25, 2014 2:08 AM, "Otávio Gonçalves de Santana" <otaviojava at java.net>
wrote:
> Really Happy to hear that.
> Done.
>
>
> On Sat, May 24, 2014 at 5:10 PM, Andrej Golovnin <
> andrej.golovnin at gmail.com> wrote:
>
>> Hi Otávio,
>>
>> it would be nice, if you would not modify the classes
>> sun.reflect.UnsafeXXXFieldAccessorImpl.
>> This classes should be changed as a part of the fix for the issue
>> JDK-5043030.
>> The patch for this issue is already in work.
>>
>> Best regards,
>> Andrej Golovnin
>>
>> On 24.05.2014, at 16:34, Otávio Gonçalves de Santana <otaviojava at java.net>
>> wrote:
>>
>> > The Boolean class has cache for true and false and using it, will save
>> > memory and will faster than using create new instance of boolean.
>> > Using JMH[1] with a code test[2] the result was:
>> > Benchmark Mode
>> Samples
>> > Mean Mean error Units
>> > m.BooleanBenchmark.newInstanceBoolean thrpt 20
>> 49801.326
>> > 369.897 ops/s
>> > m.BooleanBenchmark.newInstanceString thrpt 20
>> > 365.080 27.537 ops/s
>> > m.BooleanBenchmark.valueOfBoolean thrpt 20
>> 764906233.316
>> > 9623009.653 ops/s
>> > m.BooleanBenchmark.valueOfString thrpt 20
>> > 371.174 28.216 ops/s
>> >
>> >
>> >
>> > The diff is on attachment or can is downloading the webdrev here:
>> >
>> https://dl.dropboxusercontent.com/u/16109193/open_jdk/boolean_instance_of.zip
>> >
>> > [1] http://openjdk.java.net/projects/code-tools/jmh/
>> >
>> > [2]
>> >
>> > @State(Scope.Thread)
>> >
>> > @OutputTimeUnit(TimeUnit.SECONDS)
>> >
>> > public class BooleanBenchmark {
>> >
>> > private static final int SIZE = 1_000_000;
>> >
>> > private List<String> booleanString;
>> >
>> > private boolean[] booleans;
>> >
>> > {
>> >
>> > booleans = new boolean[SIZE];
>> >
>> > booleanString = new ArrayList<>(SIZE);
>> >
>> > for (int index = 0; index < SIZE; index++) {
>> >
>> > if (index % 2 == 0) {
>> >
>> > booleans[index] = true;
>> >
>> > booleanString.add(Boolean.TRUE.toString());
>> >
>> > } else {
>> >
>> > booleans[index] = false;
>> >
>> > booleanString.add(Boolean.FALSE.toString());
>> >
>> > }
>> >
>> > }
>> >
>> > }
>> >
>> > @GenerateMicroBenchmark
>> >
>> > public void valueOfBoolean() {
>> >
>> >
>> > for(boolean b: booleans) {
>> >
>> > Boolean result = b;
>> >
>> > }
>> >
>> > }
>> >
>> > @GenerateMicroBenchmark
>> >
>> > public void valueOfString() {
>> >
>> > for(String b: booleanString) {
>> >
>> > Boolean result = Boolean.valueOf(b);
>> >
>> > }
>> >
>> > }
>> >
>> > @GenerateMicroBenchmark
>> >
>> > public void newInstanceBoolean() {
>> >
>> >
>> > for(boolean b: booleans) {
>> >
>> > Boolean result = new Boolean(b);
>> >
>> > }
>> >
>> > }
>> >
>> > @GenerateMicroBenchmark
>> >
>> > public void newInstanceString() {
>> >
>> > for(String b: booleanString) {
>> >
>> > Boolean result = new Boolean(b);
>> >
>> > }
>> >
>> > }
>> >
>> > }
>> >
>> > --
>> > Atenciosamente.
>> >
>> > Otávio Gonçalves de Santana
>> >
>> > blog: http://otaviosantana.blogspot.com.br/
>> > twitter: http://twitter.com/otaviojava
>> > site: http://www.otaviojava.com.br
>> > (11) 98255-3513
>> > <boolean.diff>
>>
>>
>
>
> --
> Atenciosamente.
>
> Otávio Gonçalves de Santana
>
> blog: http://otaviosantana.blogspot.com.br/
> twitter: http://twitter.com/otaviojava
> site: http://www.otaviojava.com.br
> (11) 98255-3513
>
>
More information about the core-libs-dev
mailing list