delta = System.currentTimeMillis() - start;
System.out.println("Memory write (bulk): " + delta + "ms");
///////////////////////////////////////////
// Callbacks
TestInterface tlib = (TestInterface)Native.loadLibrary("testlib", TestInterface.class);
start = System.currentTimeMillis();
TestInterface.Int32Callback cb = new TestInterface.Int32Callback() {
public int invoke(int arg1, int arg2) {
return arg1 + arg2;
}
};
tlib.callInt32CallbackRepeatedly(cb, 1, 2, COUNT);
delta = System.currentTimeMillis() - start;
System.out.println("callback (JNA interface): " + delta + "ms");
tlib = new TestLibrary();
start = System.currentTimeMillis();
tlib.callInt32CallbackRepeatedly(cb, 1, 2, COUNT);
delta = System.currentTimeMillis() - start;
System.out.println("callback (JNA direct): " + delta + "ms");
start = System.currentTimeMillis();
TestInterface.NativeLongCallback nlcb = new TestInterface.NativeLongCallback() {
public NativeLong invoke(NativeLong arg1, NativeLong arg2) {
return new NativeLong(arg1.longValue() + arg2.longValue());
}
};
tlib.callLongCallbackRepeatedly(nlcb, new NativeLong(1), new NativeLong(2), COUNT);
delta = System.currentTimeMillis() - start;
System.out.println("callback w/NativeMapped (JNA interface): " + delta + "ms");
tlib = new TestLibrary();
start = System.currentTimeMillis();
tlib.callLongCallbackRepeatedly(nlcb, new NativeLong(1), new NativeLong(2), COUNT);
delta = System.currentTimeMillis() - start;
System.out.println("callback w/NativeMapped (JNA direct): " + delta + "ms");
}