我的scala应用程序需要对大型整数数组执行简单的操作&加倍,性能是一个瓶颈。尽管我可以通过各种基准测试来观察它们的结果,但我一直很难准确地确定某些优化何时开始(例如escape分析)。我很想对我的scala应用程序进行一些AOT编译,这样我就可以看到或强制(或实现)某些优化。。。或者编译成本地代码,如果可能的话,这样我就可以像边界检查一样偷工减料,观察它是否有区别。
我的问题是:哪些可供选择的编译方法适用于scala?我对llvm、vmkit、smoat、gcj等工具感兴趣。目前谁在scala中成功地使用了这些工具,或者这些方法目前都不兼容或维护吗?
GCJ可以将JVM类编译为本机代码。这个博客描述了用Scala代码完成的测试:http://lampblogs.epfl.ch/b2evolution/blogs/index.php/2006/10/02/scala_goes_native_almost?blog=7
为了回答我自己的问题,除了JVM之外,Scala没有其他后端可供选择。这个NET后端已经开发了很长时间,但其状态尚不清楚。LLVM后端也还没有准备好使用,也不清楚它的未来。