Relates :
|
|
Relates :
|
|
Relates :
|
JDK-8219492 :
|
|
JDK-8219969 :
|
|
JDK-8219974 :
|
ADDITIONAL SYSTEM INFORMATION : Mac OS X 10.13.6 on 2018 Macbook Pro A DESCRIPTION OF THE PROBLEM : I am part of the Clojure core team. I have received at least 4 reports in the last day of significantly degraded performance for Clojure when using the latest Java 1.8 and 11 releases (1.8.0_201 and 11.0.2) vs the prior releases (1.8.0_192 and 11.0.1), with no other changes. REGRESSION : Last worked in version 11.0.1 STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : You can find a reproducible case at https://github.com/hiredman/weird-user-load-performance. 1) Install the Clojure clj dependency manager / runner (see https://clojure.org/guides/getting_started) 2) Clone the repo https://github.com/hiredman/weird-user-load-performance.git 3) cd weird-user-load-performance 4) clj -A:user clj is used basically just to download the dependency jars from Maven, form the classpath, and start the Clojure runtime to run a script, which just loads a Clojure namespace (and subsequently all downstream namespaces). The "work" happening here is loading .clj files from jar files on the classpath, running the compiler, generating bytecode, and loading it in a classloader. The first run of clj will download all of the transitive deps so that run should be discarded. All subsequent runs should use the cached jars in ~/.m2/repository and a cached classpath, so should not use the network. This is a narrowed down use case from a more complicated library, but one aspect that seems to aggravate things is that there is very macro-heavy code, which is single-thread CPU-intensive. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - The program will print a timing of loading the namespaces. The expected result is that the performance is approximately the same in 1.8.0_192 vs 1.8.0_201 or 11.0.1 vs 11.0.2. ACTUAL - 1.8.0_192: 2834.550371 msecs 1.8.0_201: 9545.118397 msecs (3.3x performance degradation) 11.0.1: 2945.72692 msecs 11.0.2: 10817.427187 msecs (3.7x performance degradation) ---------- BEGIN SOURCE ---------- Unfortunately, I have been unable to narrow this down enough to be able to reproduce it in a Java-only environment. The Clojure source files are at the root of the repo - there are only 3 lines of Clojure code that just trigger a lot of compilation. I am hoping there is enough information or that this report can be combined with others to discover the cause. ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : Clojure users are currently downgrading to the prior version to avoid the issue. FREQUENCY : always
|