From a11e5a12470c8c5edad09622f3d23b660853798b Mon Sep 17 00:00:00 2001 From: Elliot Barlas Date: Wed, 31 Jan 2024 13:12:35 -0800 Subject: [PATCH] Use GraalVM native image for ebarlas submission. (#698) --- calculate_average_ebarlas.sh | 9 +++++++-- prepare_ebarlas.sh | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/calculate_average_ebarlas.sh b/calculate_average_ebarlas.sh index 2bd59d4..c73cb1a 100755 --- a/calculate_average_ebarlas.sh +++ b/calculate_average_ebarlas.sh @@ -15,5 +15,10 @@ # limitations under the License. # -JAVA_OPTS="--enable-preview" -java $JAVA_OPTS --class-path target/average-1.0.0-SNAPSHOT.jar dev.morling.onebrc.CalculateAverage_ebarlas +if [ -f target/CalculateAverage_ebarlas_image ]; then + echo "Picking up existing native image 'target/CalculateAverage_ebarlas_image', delete the file to select JVM mode." 1>&2 + target/CalculateAverage_ebarlas_image +else + echo "Choosing to run the app in JVM mode as no native image was found, use prepare_ebarlas.sh to generate." 1>&2 + java --enable-preview --class-path target/average-1.0.0-SNAPSHOT.jar dev.morling.onebrc.CalculateAverage_ebarlas +fi diff --git a/prepare_ebarlas.sh b/prepare_ebarlas.sh index f83a3ff..64b2bea 100755 --- a/prepare_ebarlas.sh +++ b/prepare_ebarlas.sh @@ -16,4 +16,9 @@ # source "$HOME/.sdkman/bin/sdkman-init.sh" -sdk use java 21.0.1-graal 1>&2 +sdk use java 21.0.2-graal 1>&2 + +if [ ! -f target/CalculateAverage_ebarlas_image ]; then + NATIVE_IMAGE_OPTS="-H:+UnlockExperimentalVMOptions --initialize-at-build-time=dev.morling.onebrc.CalculateAverage_ebarlas --gc=epsilon -O3 -march=native -R:MaxHeapSize=128m -H:-GenLoopSafepoints --enable-preview" + native-image $NATIVE_IMAGE_OPTS -cp target/average-1.0.0-SNAPSHOT.jar -o target/CalculateAverage_ebarlas_image dev.morling.onebrc.CalculateAverage_ebarlas +fi