Компиляция AOT или компиляция нативного кода Scala?

Моему scala-приложению нужно выполнять простые операции над большими массивами целых и двойных чисел, а производительность является узким местом. Я изо всех сил пытался понять, когда наступают определенные оптимизации (например, анализ побега), хотя я могу наблюдать их результаты с помощью различных тестов производительности. Я хотел бы сделать некоторую AOT-компиляцию моего scala-приложения, чтобы я мог видеть или применять (или реализовывать) определенные оптимизации... или компилировать в нативный код, если это возможно, чтобы я мог обрезать углы, такие как проверка границ, и наблюдать, если это имеет значение.

Мой вопрос: какие альтернативные методы компиляции работают для Scala? Меня интересуют такие инструменты, как llvm, vmkit, soot, gcj и т. Д. Кто на данный момент успешно использует эти инструменты в scala, или в настоящее время ни один из этих методов не совместим или не поддерживается?

2 ответа

Решение

Чтобы ответить на мой собственный вопрос, у Scala нет альтернативного бэкэнда, кроме JVM. Серверная часть.NET долгое время находилась в разработке, но ее статус неясен. Серверная часть LLVM также еще не готова к использованию, и неясно, каково ее будущее.

GCJ может компилировать классы JVM в собственный код. В этом блоге описаны тесты, выполненные с использованием кода Scala: http://lampblogs.epfl.ch/b2evolution/blogs/index.php/2006/10/02/scala_goes_native_almost?blog=7

Другие вопросы по тегам