我一直在用 Java 开发一个图像处理应用程序,但我最近对 VLA 很感兴趣。原因是因为我相信我可以提高应用程序的性能(我关心的主要是与 C/C++ 库的互连,因为在 Java 中使用 C/C++桥接器时似乎有性能惩罚)。
背景(据我所知):
- VLA 翻译成 C 代码,然后编译成本地机器代码。
- AOT (Java/Mono C#) 也可以生成本机机器代码(而不是使用 VM,但仍需要运行时捆绑包)。
- 在某些情况下,使用 VM 甚至可以比本地机器代码更快(因为它可以通过 JIT 编译器进行优化)。
- 可使用 VLA 生成可消费的 C/C++ 库。
有一些事情在我的脑海中萦绕,我找不到答案:
- 可以使用 AOT 编译器生成 C/C++ 消耗性库吗?(我猜不是)。
- 生成的 AOT 二进制文件,是否还有桥接性能问题?(我想确实如此)。
- 在 VLA 中调用 C/C++ 库与从 C 中调用它们的性能相同吗?(我想是的)。
有什么见解吗?