Skip to content

Add Baseline and Perf Tests to Perf Poetry #719

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

Merged
merged 1 commit into from
Apr 20, 2022

Conversation

steve-the-edwards
Copy link
Contributor

@steve-the-edwards steve-the-edwards commented Apr 11, 2022

Use WorkflowInterceptor to trace each render pass as well as particular nodes within it.

We use a "Fresh Rendering Ratio" which is the # of render passes for a node that had a different RenderState / the total # of render passes.

@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch 6 times, most recently from 2f01386 to ec8d5f6 Compare April 12, 2022 20:52
@steve-the-edwards steve-the-edwards marked this pull request as ready for review April 12, 2022 21:28
@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch from ec8d5f6 to 0f29743 Compare April 12, 2022 21:33
@steve-the-edwards
Copy link
Contributor Author

Still more work to do to refine these and establish the best scenarios, but this is a good basis and gets us setup in the application 'complex-poetry' where we should focus our performance testing in.

Copy link
Contributor Author

@steve-the-edwards steve-the-edwards left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Rework to use WorkflowInterceptor

@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch 2 times, most recently from 56d4508 to 17ed0c5 Compare April 13, 2022 19:50
}

// kotlin_builtins duplication between 1.5.20 and 1.6.10?
packagingOptions.exclude("**/*.kotlin_*")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

}

dependencies {
implementation(project(":benchmarks:performance-poetry:complex-poetry"))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so what's a complex benchmark? What's a not complex one? Are there more interesting words we can use to describe the difference?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless... this is about "ComplexPoetry". Why couldn't that have been just Poetry?!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol. This is a 'Complex' version of the Poetry app.

benchmarkRule.measureRepeated(
packageName = PACKAGE_NAME,
metrics = traceMetricsList,
iterations = 20,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure 20 is enough. What's the distribution looking like?

@steve-the-edwards
Copy link
Contributor Author

steve-the-edwards commented Apr 13, 2022

  • Put the render pass and stale/fresh node counting into a UI test that can be verified.

@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch 5 times, most recently from 77bbe94 to e6e0634 Compare April 19, 2022 20:21
@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch from e6e0634 to a6fcd2b Compare April 19, 2022 22:03
@@ -1,22 +1,27 @@
# benchmarks

This module contains benchmarks. Used to measure and help improve Workflow performance. These tests
should be run on physical devices.
should be run on physical devices, or the closest approximation to physical devices you can get.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the deterministic tests, that's shouldn't be a requirement anymore, right?

complexityDelay = 100L
),
expectedPasses = 61,
expectedRatio = 0.11891891891891893
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if you'd want to store the ratio as 2 numbers instead? idk feels weird to store a truncated number.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, if you stored 2 numbers, you could then assert against each, and report whether there are less things fresh or more overall things.

@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch from a6fcd2b to abbea36 Compare April 20, 2022 15:23
Use WorkflowInterceptor to count Render Passes and determine ratio of 'fresh' renderings.
@steve-the-edwards steve-the-edwards force-pushed the sedwards/update-benchmarks-readme branch from abbea36 to dac8999 Compare April 20, 2022 15:36
@steve-the-edwards steve-the-edwards merged commit 70cc79b into main Apr 20, 2022
@steve-the-edwards steve-the-edwards deleted the sedwards/update-benchmarks-readme branch April 20, 2022 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants