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 <otavioj...@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>