-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8361076: Add benchmark for ImageReader in preparation for Valhalla changes #26044
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
base: master
Are you sure you want to change the base?
Conversation
👋 Welcome back david-beaumont! A progress list of the required criteria for merging this PR into |
@david-beaumont This change is no longer ready for integration - check the PR body for details. |
I removed a JrtFS related benchmark because it tracked the other one closely enough to not be worth it (hence only 1 additional module export needed). |
@david-beaumont The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
} | ||
} | ||
|
||
/// NOT a @State since that causes setUp()/tearDown() to be shared, but we |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment might have been before I applied Scope.Benchmark
to the states below. I'll double check if it's still an issue.
Apologies. I realized the name for this class was still completely daft. After spending so much time looking at the details, I didn't spot the obvious. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Build change trivially fine.
/reviewers 2
|
||
// Created by running "java -verbose:class", throwing away anonymous inner | ||
// classes and anything without a reliable name, and grouping by the stated | ||
// source. It's not perfect, but it's representative. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is maintainable. How useful (or not) is this benchmark if the names of all the internal classes (that will change from release to release) are dropped from this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Debatable. It's obviously going to scale any results somewhat based on the size of the resources and number of classes. It's kind nice to see "this change removes at least N micro/milli seconds of time spent" since that's a minimum set of classes we expect to always be needed, so any time saved is a lower bound.
I'd say maybe leave it as is for now with a note saying "if this keeps breaking, make the list less fragile".
I'm also assuming this is only run manually, and not a part of any CI pipeline ... so please let me know if I'm wrong about that.
Initial benchmark to capture at least some comparative measures of ImageReader performance.
Current results on my laptop:
Benchmark Mode Cnt Score Error Units
NewImageBenchmark.warmCache_CountAllNodes avgt 5 0.785 ± 0.140 ms/op
NewImageBenchmark.coldStart_CountOnly ss 5 34.051 ± 17.662 ms/op
NewImageBenchmark.coldStart_InitAndCount ss 5 31.006 ± 9.674 ms/op
NewImageBenchmark.coldStart_LoadJavacInitClasses ss 5 3.752 ± 6.873 ms/op
The upcoming changes to ImageReader should show significant improvements to these results.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26044/head:pull/26044
$ git checkout pull/26044
Update a local copy of the PR:
$ git checkout pull/26044
$ git pull https://git.openjdk.org/jdk.git pull/26044/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26044
View PR using the GUI difftool:
$ git pr show -t 26044
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26044.diff
Using Webrev
Link to Webrev Comment