Package com.esotericsoftware.reflectasm.benchmark

Source Code of com.esotericsoftware.reflectasm.benchmark.FieldAccessBenchmark

package com.esotericsoftware.reflectasm.benchmark;

import java.lang.reflect.Field;
import java.util.HashMap;

import com.esotericsoftware.reflectasm.FieldAccess;

public class FieldAccessBenchmark extends Benchmark {
  public FieldAccessBenchmark () throws Exception {
    int count = 1000000;
    Object[] dontCompileMeAway = new Object[count];

    FieldAccess access = FieldAccess.get(SomeClass.class);
    SomeClass someObject = new SomeClass();
    int index = access.getIndex("name");

    Field field = SomeClass.class.getField("name");

    for (int i = 0; i < 100; i++) {
      for (int ii = 0; ii < count; ii++) {
        access.set(someObject, index, "first");
        dontCompileMeAway[ii] = access.get(someObject, index);
      }
      for (int ii = 0; ii < count; ii++) {
        field.set(someObject, "first");
        dontCompileMeAway[ii] = field.get(someObject);
      }
    }
    warmup = false;

    for (int i = 0; i < 100; i++) {
      start();
      for (int ii = 0; ii < count; ii++) {
        access.set(someObject, index, "first");
        dontCompileMeAway[ii] = access.get(someObject, index);
      }
      end("FieldAccess");
    }
    for (int i = 0; i < 100; i++) {
      start();
      for (int ii = 0; ii < count; ii++) {
        field.set(someObject, "first");
        dontCompileMeAway[ii] = field.get(someObject);
      }
      end("Reflection");
    }

    chart("Field Set/Get");
  }

  static public class SomeClass {
    public String name;
  }

  public static void main (String[] args) throws Exception {
    new FieldAccessBenchmark();
  }
}
TOP

Related Classes of com.esotericsoftware.reflectasm.benchmark.FieldAccessBenchmark

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.