我正在寻找一种将C源代码编译成高性能Java字节码的方法.我已成功使用NestedVM,但对于我正在处理的项目而言,性能损失是不可接受的.我还看到了针对这个问题的各种开源项目以及一些商业产品. 这个SO问题涉及将非Java转换为Java源代码的一般问题,但我只想从C转换为Java字节码.
将C源代码编译成高性能,纯Java字节码的最佳方法是什么?
作为Cibyl的作者,我可能会有偏见.无论如何,我已经看过了公理化C编译器生成的java字节码,效率不高.NestedVM和Cibyl都可以通过编译MIPS二进制文件然后将二进制文件转换为Java字节码来工作.它的效率令人惊讶,主要问题是8字节和16字节值的存储器访问(需要在多个步骤中完成).
NestedVM和Cibyl的性能特征略有不同,Cibyl通常对整数繁重的工作负载更快,而NestedVM处理浮动和双倍更好.这是因为Cibyl使用GCC软浮点支持(尽管使用"真正的"Java字节码浮点指令),而NestedVM则转换MIPS FPU指令.
Cibyl也更加针对J2ME环境,尽管它在其他平台上也可以使用.我的猜测是,你会比使用Axiomatic C编译器更幸运.