> This PR improves the startup time for libgraal by speeding up how > `VM.savedProps` is copied into libgraal. This data structure is now > serialized to a native buffer directly from C++ and the native buffer is then > directly decoded by libgraal. > > ## Times > > The basic benchmarking below shows that this change brings the time for a nop > Java app with eager libgraal initialization (2) down to almost the same time > as lazy libgraal initialization (1). The latter typically means no libgraal > initialization happens as a top tier JIT compilation is never scheduled in > such a short running app. > > > public class Nop { > public static void main(String[] args) {} > } > > > (1) Baseline (no options): > >> for i in (seq 10); java Nop; end > 0.05 real 0.04 user 0.01 sys > 0.04 real 0.03 user 0.01 sys > 0.04 real 0.03 user 0.01 sys > 0.04 real 0.03 user 0.01 sys > 0.03 real 0.03 user 0.00 sys > 0.04 real 0.03 user 0.01 sys > 0.04 real 0.03 user 0.00 sys > 0.03 real 0.03 user 0.00 sys > 0.04 real 0.03 user 0.01 sys > 0.03 real 0.03 user 0.00 sys > > > (2) Eagerly initialize libgraal (with PR): > >> for i in (seq 10); /usr/bin/time java -XX:+EagerJVMCI Nop; end > 0.06 real 0.04 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > 0.05 real 0.03 user 0.01 sys > > > (3) Eagerly initialize libgraal (without PR): > >> for i in (seq 10); /usr/bin/time java -XX:+EagerJVMCI Nop; end > 0.11 real 0.08 user 0.02 sys > 0.08 real 0.06 user 0.01 sys > 0.08 real 0.07 user 0.01 sys > 0.10 real 0.07 user 0.01 sys > 0.08 real 0.06 user 0.01 sys > 0.10 real 0.07 user 0.01 sys > 0.08 real 0.07 user 0.01 sys > 0.08 real 0.07 user 0.01 sys > 0.08 real 0.06 user 0.01 sys > 0.08 real ...
Doug Simon has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains one additional commit since the last revision: copy system properties into libgraal more efficiently ------------- Changes: - all: https://git.openjdk.org/jdk/pull/14291/files - new: https://git.openjdk.org/jdk/pull/14291/files/c3c04749..7a82c24e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=14291&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14291&range=01-02 Stats: 26320 lines in 384 files changed: 24869 ins; 633 del; 818 mod Patch: https://git.openjdk.org/jdk/pull/14291.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/14291/head:pull/14291 PR: https://git.openjdk.org/jdk/pull/14291