-
Notifications
You must be signed in to change notification settings - Fork 2.4k
[Refactor] ImmutableOpenMap and ImmutableOpenIntMap to core lib #7018
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Gradle Check (Jenkins) Run Completed with:
|
995bc34 to
9baea5f
Compare
Gradle Check (Jenkins) Run Completed with:
|
Gradle Check (Jenkins) Run Completed with:
|
638f2b6 to
dcecb87
Compare
Gradle Check (Jenkins) Run Completed with:
|
|
@nknize the allocation rates are very high for JVM version, here is the Compare that with Java one: I understand that you have measured the memory heap consumption (roughly the same) but the pressure to JVM GC seems to be exceptionally high. |
That makes sense because most of this ( |
The |
I think we could discuss for maybe a follow up PR? I'm curious what others think about this. The last benchmark I saw for Eclipse Collections measured against JDK 11 and much of the performance gains (IIRC) were explained because of specialized types (e.g., Maybe @uschindler or @rmuir have some thoughts on this from an OpenJDK perspective? |
dcecb87 to
508e246
Compare
Gradle Check (Jenkins) Run Completed with:
|
508e246 to
256f133
Compare
Gradle Check (Jenkins) Run Completed with:
|
|
@nknize can we target this for v2.8.0 and move this out of v2.7.0 scope? |
This commit refactors the heavily dependent ImmutableOpenMap and ImmutableOpenIntMap from the :server module to the :core library in preparation for refactoring other core foundation classes (e.g., StreamInput, StreamOutput, Version). It also encapsulates the hppc library dependency by implementing the java Iterator API contracts in place of the hppc specific ObjectObjectCursor and IntObjectCursor iterators and cuts over usage to the java.util.iterator. Microbenchmarks are included to compare cpu and memory allocations. Signed-off-by: Nicholas Walter Knize <[email protected]>
Signed-off-by: Nicholas Walter Knize <[email protected]>
Signed-off-by: Nicholas Walter Knize <[email protected]>
256f133 to
2b0f30c
Compare
Gradle Check (Jenkins) Run Completed with:
|
|
Code looks good. The refactor has downstream impact on plugins packaged with the default distribution: security-analytics, k-nn, spring-data-opensearch, etc. Could you please check whether it's just a namespace change or whether there will be dragons? Maybe make the change in a couple of those (ideally all) before we merge this? |
Happy to check the sql plugin. How can I point gradle to use libraries from this branch? |
|
This PR is stalled because it has been open for 30 days with no activity. Remove stalled label or comment or this will be closed in 7 days. |
|
This PR was closed because it has been stalled for 7 days with no activity. |
This PR refactors the heavily dependent
ImmutableOpenMapandImmutableOpenIntMapfrom the:servermodule to the:corelibrary in preparation for refactoring other core foundation classes (e.g.,StreamInput,StreamOutput,Version).It also encapsulates the hppc library dependency by implementing the java Iterator API contracts in place of the hppc specific
ObjectObjectCursorandIntObjectCursoriterators and cuts over usage to the java.util.iterator.Microbenchmarks for compatibility w/ JFR are included to compare cpu and memory allocations.
Benchmarks show the following:
Baseline:
CPU
Memory
PR:
CPU
Memory
CPU is faster using this PR since the modern JDKs (JDK14+) largely make the HPPC library unnecessary. The temporary
ImmutableEntry(garbage collected after the iterator completes) uses 5% overhead. This overhead will go away when we remove HPPC altogether.relates #5910