Comparing the performance of Panama with JNI, JNA, and JNR - based on Java 21
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Fri Mar 24 21:22:48 UTC 2023
Hi Glavo,
that's a very interesting comparison, thank you!
We will look into the C string -> Java string issue. There are probably
"tricks" [1] that native strlen does which we could replicate in our
Java code (or we could just do a trivial call to strlen :-) ).
Aso for struct layouts, I think it is a reasonable request - e.g. allow
creation of struct layouts which are "padded" correctly. But I think
we'd still want to retain the "raw" variant, which might be useful for
tools such as jextract.
Cheers
Maurizio
On 24/03/2023 19:07, Glavo wrote:
> I have run a series of benchmarks of Panama, JNI, JNA, and JNR based
> on the latest JDK. Here is its GitHub repository:
>
> https://github.com/Glavo/java-ffi-benchmark
>
> Here I tested the performance of no-ops, accessing structs, string
> conversions, and callbacks, respectively. I also tried the new
> isTrivial linker option.
> I summarized the results in README and charted them.
>
> In this email, in addition to sharing the above results, I would also
> like to talk about several issues I have encountered
>
> 1. MemorySegment.getUtf8String is unexpectedly slow
>
> Panama is much faster than JNA in most cases, but the operation of
> converting C strings to Java strings is an exception.
> I checked the source code of JNA and Panama, and the suspicious
> difference is that JNA uses strlen from the C standard library,
> while Panama uses Java loops.
> Perhaps this method can be optimized.
>
>
> 2. StructLayout must manually specify all padding
>
> Can we provide a convenient method for automatically padding
> between fields based on alignment?
> The current structLayout method is annoying for situations where
> you need to manually simulate the layout of a C struct.
>
>
> Glavo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/panama-dev/attachments/20230324/9153aff1/attachment.htm>
More information about the panama-dev
mailing list