import java.lang.foreign.*;

public class FFMPutInt {

    private static final int ITERATIONS = 100_000_000;
    private static final int SIZE_IN_BYTES = 4;
    private static boolean   global = true;

    public static void main(String[] args) throws Exception {
        int value = 123;

        if (args.length != 0) {
            global = "global".equals(args[0]);
        }

        Arena arena = global ? Arena.global() : Arena.ofConfined();

        MemorySegment segment = arena.allocate(ValueLayout.JAVA_INT);

        long start = System.nanoTime();

        for (int i = 0; i < ITERATIONS; i++) {
            segment.set(ValueLayout.JAVA_INT, 0L, value);
        }

        long end = System.nanoTime();

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

