RFR: 8321620: Optimize JImage decompressors
Sergey Tsypanov
stsypanov at openjdk.org
Fri Dec 8 22:43:44 UTC 2023
On Wed, 8 Nov 2023 11:55:22 GMT, Glavo <duke at openjdk.org> wrote:
> This PR significantly speeds up decompressing resources in Jimage while significantly reducing temporary memory allocations in the process.
>
> This will improve startup speed for runtime images generated using `jlink --compress 1` and `jlink --compress 2` .
>
> I generated a runtime image containing javac using `jlink --compress 1 --add-modules jdk.compiler` and tested the time it took to compile a simple HelloWorld program 20 times using `perf stat -r20 javac /dev/shm/HelloWorld.java`, this PR reduces the total time taken from 17830ms to 13598ms (31.12% faster).
test/jdk/tools/jlink/plugins/CompressIndexesTest.java line 100:
> 98:
> 99: private void check(byte[] flow, List<byte[]> arrays) {
> 100: List<Integer> d = Arrays.stream(CompressIndexes.decompressFlow(flow)).boxed().toList();
Can we rewrite this as
int[] d = CompressIndexes.decompressFlow(flow);
int[] dd = new int[arrays.length];
for (int j = 0; j < arrays.length; j++) {
byte[] b = arrays[j];
dd[j] = CompressIndexes.decompress(b, 0);
}
if (!Arrays.equals(d, dd) {
//...
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16556#discussion_r1400744398
More information about the core-libs-dev
mailing list