import sun.misc.Unsafe;
import java.lang.reflect.Field;

public class UnsafePutInt {

    private static final int ITERATIONS = 100_000_000;
    private static final int SIZE_IN_BYTES = 4;

    public static void main(String[] args) throws Exception {
        Field f = Unsafe.class.getDeclaredField("theUnsafe");
        f.setAccessible(true);
        Unsafe unsafe = (Unsafe) f.get(null);

        long baseAddress = unsafe.allocateMemory(SIZE_IN_BYTES);

        int value = 123;

        long start = System.nanoTime();

        for (int i = 0; i < ITERATIONS; i++) {
            unsafe.putInt(baseAddress, value);
        }

        long end = System.nanoTime();
        unsafe.freeMemory(baseAddress);

        System.out.println("Unsafe.putInt() time: " + String.format("%.3f", (end - start) / 1_000_000.0f) + "ms");
    }
}

