-
-
Notifications
You must be signed in to change notification settings - Fork 61
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
JDK 21 benchmarks #164
Comments
Hi there! Nippy does indeed use DOS. And thanks for pinging about this, I actually wasn't aware of specific DOS improvements. I can't recall off-hand what JVM I used for the last benchmarks - but I'll update them for the next pre-release using JDK 21 👍 Will also document the JDK version used for benchmarks. |
Apple MBP M1 Max, commit 79f0212 Corretto 17.0.9
Corretto 21.0.1
I was expecting a different result for the default and fast cases (hoping to see a change in the other direction), but look at the encrypted score! I ran the benchmark a few times to be sure. It's not just nippy times; reader and fressian have also increased, so something else may be at play here. The size has changed between the versions in all tests, so further scrutiny is warranted. That said, my checksum tests for Nippy output didn't flag anything for my use case. |
Thanks for checking @lowecg! Re: no improvement in default/fast cases from JVM 17 to 21Sorted explanations that come to mind:
Re: data size changingThat's normal behaviour since the current stress data includes random values. The data will be fixed for a given set of bench runs, but may vary between runs (e.g. when you're starting up a different JVM). There's no specific motivation to include these random values so they could be removed, though it's also currently unclear to me what the benefit would be (besides maybe reducing possible confusion as in this case). I'd be up for a simple PR that made the stress data deterministic. Re: encryption speed improvementsThe improvement here is large enough to be suspicious. Sorted explanations:
|
Those will fail if you're running the unit tests in a REPL, etc. because they depend on specific JVM options being in place. They should pass via |
Ah - I was running the benchmarks from a REPL and the tests from within Cursive. Using JDK 17
JDK 21 crashes spectacularly
|
That's likely intermittent and unrelated to the JDK version. v3.4.0-beta1 uses a different compression library that seems to be susceptible to core dumps when attempting to decrypt invalid (e.g. random) data. There's a test for this here. Haven't decided yet what to do about the problem. ~Sorted options include:
Was planning to investigate further and potentially report upstream when prepping the next v3.4 pre-release. |
Benchmarks have been updated to use JDK 21 👍 |
You're probably aware of this already, but JDK 21 has some nice improvements around DataOutputStream. Unless I'm mistaken, Nippy uses DOS?
Have you run the benchmarks against JDK 21?
The text was updated successfully, but these errors were encountered: