====================================================================== StreamTest.java ====================================================================== import static java.util.stream.Collectors.*; class StreamTest { public static void main(String... av) { var words = java.util.List.of("hello", "fuzzy", "world"); System.out.println(words.stream().filter(w->!w.contains("u")).collect(joining(", "))); // => hello, world } } ====================================================================== HelloWorld.java ====================================================================== /* Some comments */ public class HelloWorld { public static void main(String args[]) { Object x = new java.util.Random(); //Some more comments System.out.println("Hello World"); } } ====================================================================== HelloStream BEFORE 0.0259389 ====================================================================== $ OLD/bin/java -cp StreamTest.jar -Xshare:off -XX:DumpLoadedClassList=st.classlist StreamTest hello, world $ OLD/bin/java -cp StreamTest.jar -Xshare:dump -Xlog:cds -XX:SharedArchiveFile=st.jsa -XX:SharedClassListFile=st.classlist StreamTest $ perf stat -r 100 OLD/bin/java -cp StreamTest.jar -Xshare:on -XX:SharedArchiveFile=st.jsa StreamTest > /dev/null Performance counter stats for 'OLD/bin/java -cp StreamTest.jar -Xshare:on -XX:SharedArchiveFile=st.jsa StreamTest' (100 runs): 30.13 msec task-clock # 1.162 CPUs utilized ( +- 0.11% ) 158 context-switches # 5.197 K/sec ( +- 0.43% ) 8 cpu-migrations # 263.131 /sec ( +- 2.35% ) 4,177 page-faults # 137.387 K/sec ( +- 0.03% ) 137,114,181 cycles # 4.510 GHz ( +- 0.11% ) 146,011,477 instructions # 1.05 insn per cycle ( +- 0.02% ) 26,634,358 branches # 876.041 M/sec ( +- 0.02% ) 843,945 branch-misses # 3.16% of all branches ( +- 0.08% ) 0.0259389 +- 0.0000992 seconds time elapsed ( +- 0.38% ) ====================================================================== HelloStream AFTER 0.0185902 ====================================================================== $ NEW/bin/java -cp StreamTest.jar -XX:AOTMode=record -XX:AOTConfiguration=st.aotconfig StreamTest hello, world $ NEW/bin/java -cp StreamTest.jar -XX:AOTMode=create -Xlog:cds -XX:AOTCache=st.aot -XX:AOTConfiguration=st.aotconfig -XX:+AOTClassLinking StreamTest $ perf stat -r 100 NEW/bin/java -cp StreamTest.jar -XX:AOTMode=on -XX:AOTCache=st.aot StreamTest > /dev/null Performance counter stats for 'NEW/bin/java -cp StreamTest.jar -XX:AOTMode=on -XX:AOTCache=st.aot StreamTest' (100 runs): 20.54 msec task-clock # 1.105 CPUs utilized ( +- 0.20% ) 110 context-switches # 5.314 K/sec ( +- 0.66% ) 6 cpu-migrations # 289.849 /sec ( +- 3.60% ) 4,029 page-faults # 194.634 K/sec ( +- 0.03% ) 93,167,193 cycles # 4.501 GHz ( +- 0.19% ) 98,101,230 instructions # 1.04 insn per cycle ( +- 0.02% ) 18,162,493 branches # 877.398 M/sec ( +- 0.03% ) 454,325 branch-misses # 2.51% of all branches ( +- 0.08% ) 0.0185902 +- 0.0000978 seconds time elapsed ( +- 0.53% ) ====================================================================== javac HelloWorld.java BEFORE 0.182298 ====================================================================== $ OLD/bin/java -Xshare:off -XX:DumpLoadedClassList=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java $ OLD/bin/java -Xshare:dump -Xlog:cds -XX:SharedArchiveFile=jc.jsa -XX:SharedClassListFile=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java $ perf stat -r 100 OLD/bin/java -Xshare:on -XX:SharedArchiveFile=jc.jsa com.sun.tools.javac.Main -d . HelloWorld.java Performance counter stats for 'OLD/bin/java -Xshare:on -XX:SharedArchiveFile=jc.jsa com.sun.tools.javac.Main -d . HelloWorld.java' (100 runs): 532.50 msec task-clock # 2.921 CPUs utilized ( +- 0.23% ) 3,536 context-switches # 6.764 K/sec ( +- 0.48% ) 27 cpu-migrations # 51.647 /sec ( +- 1.70% ) 16,483 page-faults # 31.530 K/sec ( +- 0.11% ) 2,369,335,622 cycles # 4.532 GHz ( +- 0.22% ) 2,656,981,497 instructions # 1.12 insn per cycle ( +- 0.12% ) 521,616,866 branches # 997.777 M/sec ( +- 0.12% ) 22,876,488 branch-misses # 4.40% of all branches ( +- 0.11% ) 0.182298 +- 0.000491 seconds time elapsed ( +- 0.27% ) ====================================================================== javac HelloWorld.java AFTER 0.149146 ====================================================================== $ NEW/bin/java -XX:AOTMode=record -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main -d . HelloWorld.java $ NEW/bin/java -XX:AOTMode=create -Xlog:cds -XX:AOTCache=jc.aot -XX:AOTConfiguration=jc.aotconfig -XX:+AOTClassLinking com.sun.tools.javac.Main -d . HelloWorld.java $ perf stat -r 100 NEW/bin/java -XX:AOTMode=on -XX:AOTCache=jc.aot com.sun.tools.javac.Main -d . HelloWorld.java Performance counter stats for 'NEW/bin/java -XX:AOTMode=on -XX:AOTCache=jc.aot com.sun.tools.javac.Main -d . HelloWorld.java' (100 runs): 449.31 msec task-clock # 3.013 CPUs utilized ( +- 0.26% ) 2,418 context-switches # 5.273 K/sec ( +- 0.97% ) 18 cpu-migrations # 39.255 /sec ( +- 2.47% ) 14,995 page-faults # 32.702 K/sec ( +- 0.11% ) 2,053,837,703 cycles # 4.479 GHz ( +- 0.26% ) 2,411,262,631 instructions # 1.15 insn per cycle ( +- 0.13% ) 474,484,764 branches # 1.035 G/sec ( +- 0.13% ) 20,162,086 branch-misses # 4.27% of all branches ( +- 0.14% ) 0.149146 +- 0.000428 seconds time elapsed ( +- 0.29% ) ====================================================================== System info ====================================================================== $ uname -a Linux ioilinux2 5.15.0-33-generic #34-Ubuntu SMP Wed May 18 13:34:26 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS" $ date Tue Oct 15 08:55:36 PM PDT 2024 $ cat /proc/cpuinfo | tail -28 processor : 15 vendor_id : GenuineIntel cpu family : 6 model : 165 model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz stepping : 5 microcode : 0xf8 cpu MHz : 2900.000 cache size : 16384 KB physical id : 0 siblings : 16 core id : 7 cpu cores : 8 apicid : 15 initial apicid : 15 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp pku ospke md_clear flush_l1d arch_capabilities vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs pml ept_mode_based_exec bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs itlb_multihit bogomips : 5799.77 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: $ cat /proc/meminfo MemTotal: 32597968 kB MemFree: 15832164 kB MemAvailable: 26698372 kB Buffers: 2745148 kB Cached: 8073188 kB SwapCached: 28956 kB Active: 8285412 kB Inactive: 6761980 kB Active(anon): 3471304 kB Inactive(anon): 1125184 kB Active(file): 4814108 kB Inactive(file): 5636796 kB Unevictable: 304 kB Mlocked: 112 kB SwapTotal: 2097148 kB SwapFree: 1792 kB Dirty: 168 kB Writeback: 0 kB AnonPages: 4201384 kB Mapped: 506612 kB Shmem: 367424 kB KReclaimable: 933880 kB Slab: 1350644 kB SReclaimable: 933880 kB SUnreclaim: 416764 kB KernelStack: 33792 kB PageTables: 79044 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 18396132 kB Committed_AS: 23528192 kB VmallocTotal: 34359738367 kB VmallocUsed: 65756 kB VmallocChunk: 0 kB Percpu: 20288 kB HardwareCorrupted: 0 kB AnonHugePages: 2048 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB FileHugePages: 0 kB FilePmdMapped: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB DirectMap4k: 12033484 kB DirectMap2M: 21248000 kB DirectMap1G: 1048576 kB