perf(gen_srcs): transparent JVM AOT caching via Project Leyden#96
Open
english wants to merge 1 commit into
Open
perf(gen_srcs): transparent JVM AOT caching via Project Leyden#96english wants to merge 1 commit into
english wants to merge 1 commit into
Conversation
…83/514) On JDK 24+, gen_srcs now automatically creates and uses a JVM AOT cache (.gen_srcs.aot) in the workspace root. The first run pays a one-time cost (~5s) to record class loading and create the cache; subsequent runs memory-map the cache instead of loading/linking/ compiling from scratch. Falls back gracefully on older JDKs or when the cache is stale. Delete .gen_srcs.aot to force re-creation. ### Benchmark (banksy, Hyperfine, 10 runs, warm) - without cache: 2.506s ± 0.030s - with cache: 2.155s ± 0.036s - change: **-14%** Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26fd6c6 to
efebb1f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
On JDK 24+, gen_srcs now automatically creates and uses a JVM AOT cache (
.gen_srcs.aot) in theworkspace root via JEP 483 (AOT class loading/linking) and JEP 514 (AOT method profiling/compilation).
The first
bazel run //:gen_srcspays a one-time cost (~5s) to do a training run and create thecache. Subsequent runs memory-map the cache instead of loading/linking/compiling from scratch, saving
~300-400ms per invocation.
Falls back gracefully on older JDKs or when the cache is stale (classpath change). Delete
.gen_srcs.aotto force re-creation.Implementation
java_binary(gen_srcs_bin) with no AOT flagsclojure_gen_srcsgenerates ansh_binarywrapper that transparently handles cache creation andpasses
--wrapper_script_flag=--jvm_flag=-XX:AOTCache=...at runtimeBenchmark (banksy, Hyperfine, 10 runs, warm)
(written by Claude)