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>

Reply via email to