RFR: JDK-8306860: Avoid unnecessary allocation in List.map() when list is empty

Christoph Dreis duke at openjdk.org
Tue Apr 25 15:41:47 UTC 2023


Hi,

I've been profiling our compilation tasks lately and noticed that `List.map` is under the top consumers.

<img width="1045" alt="image" src="https://user-images.githubusercontent.com/6304496/230922012-d9c8f63f-beba-4e8a-a33c-367fb3cbf147.png">

There are probably more aggressive options to optimize this, but I found that checking for empty lists already reduces the overall allocations by ~500MB for one of our compilation tasks with no measurable regressions (but also no noticeable improvements) in timings.

<img width="943" alt="image" src="https://user-images.githubusercontent.com/6304496/230922383-e0363eca-bc87-4ad2-8465-ca1e801bd164.png">

In case you consider this worthwhile, I'd appreciate a sponsoring of this (including a ticket because I have no rights to create one, review etc.). I've found https://bugs.openjdk.org/browse/JDK-8032359 but this was closed as won't fix.

Let me know what you think.

Cheers,
Christoph

-------------

Commit messages:
 - Reduce allocations in List.map() when it is empty

Changes: https://git.openjdk.org/jdk/pull/13407/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13407&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8306860
  Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/13407.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13407/head:pull/13407

PR: https://git.openjdk.org/jdk/pull/13407


More information about the compiler-dev mailing list