Add Java/Kotlin-GraalVM-native client (to solve performance problems with standard Java/Kotlin) #107
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Как выяснилось, многие стратегии на Java/Kotlin имеют серьезные проблемы с низкой и непредсказуемой производительностью из-за JIT и, как следствие, TIME LIMITами
Потребляемое время для jvm-стратегий #106
Одно из решений - это использовать GraalVM Ahead of Time компиляцию native-image
если раньше моя стратегия локально занимала 12с на выполнение (неполный бой с QuickStart'ами), то GraalVM билд занимает ~1c,
и самое главное - все это время прекрасно отслеживается внутри самой стратегии
кажется, что такой вариант билда здорово поможет java\kotlin стратегиям
работоспособность контейнера проверял следующей командой:
в результате стратегия запускалась, и собранный бинарник оказывался у меня в
links:
https://www.graalvm.org/reference-manual/native-image/
https://www.graalvm.org/reference-manual/native-image/NativeImageMavenPlugin/
PS: докерфайл мб можно как-то улучшить, я совсем не эксперт в докере
PPS: с базовым образом oracle/graalvm-ce:20.3.0-java11 у меня зависал yum
PPPS: преобразование jar в натив на моей стратегии с 2мб jar занимает примерно 30сек реального времени, проц 9700k. Выходной бинарь имеет размер ~11мб