-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
PR benchmark stats #138
PR benchmark stats #138
Conversation
@dgafka , I think you need to enable PR write permissions on pull requests if you agree: https://github.com/marketplace/actions/sticky-pull-request-comment#error-resource-not-accessible-by-integration |
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.
Great PR, If we will polish this a bit more, this will make a huge difference into the feedback for PR creator and the reviewer :)
bin/run-benchmarks.php
Outdated
|
||
array_shift($output); | ||
array_pop($output); | ||
array_pop($output); |
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.
Can you add a comment what is this for?
.github/workflows/benchmark-pr.yml
Outdated
composer update --working-dir=packages/Symfony --${{ matrix.stability }} --prefer-dist --no-interaction | ||
composer update --working-dir=packages/Laravel --${{ matrix.stability }} --prefer-dist --no-interaction | ||
|
||
- name: Download main branch benchmark data |
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 think what you've mentioned the other day, that jobs may be actually executed on different runners, which makes comparing those not accurate is crucial.
What we could do instead in here is to first run the benchmarks on PR branch
and then checkout to the main branch
.
I think be possible if we will use actions/checkout@v2
and fetch-depth: '0'
so it fetch all available branches.
This way within single job, we could run two benchmarks and compare the results, avoiding the pitfall of different underlying hardware (the caching part would not not be needed in that case).
Wdyt?
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 read that we may have 10-20% performance difference on ubuntu linux. But yes, I expect the benchmark in the same runner to have less difference. But the job will be 2 times longer.
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 read that we may have 10-20% performance difference on ubuntu linux.
That's actually significant amount.
But the job will be 2 times longer.
That's not a problem. Other tests will actually take more time and it will run in parallel :)
Can we go for that in that case?
.github/workflows/benchmark-main.yml
Outdated
- name: Install dependencies | ||
run: | | ||
composer update --${{ matrix.stability }} --prefer-dist --no-interaction | ||
composer update --working-dir=packages/Ecotone --${{ matrix.stability }} --prefer-dist --no-interaction |
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 wonder, if we run tests directly from the root on those catalogs? So we don't need to install dependencies for each of them.
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.
Indeed I think it may be possible and better. And wdyt of having dedicated Lite/Symfony/Laravel apps in the monorepo root for benchmarks ?
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.
If we put them under quickstart
, in some benchmark
subcatalog then all fine by me :)
Then we could have same implementation for those three and see how they are comparing.
I think we can use those benchmarks for testing out projection rebuilds too. There is a lot of tricks for optimalization those, so that would show us how much we improved.
e091c2f
to
f16b6d3
Compare
Hello @dgafka
|
with: | ||
clean: false | ||
|
||
- name: Benchmark PR with opcache enabled |
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.
Dependencies between PR and Main may be incompatibile.
Can we run composer update once on the Main and once on the PR's branch?
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.
here you go
I've not found an safe way to set it up. Can we drop it for the time being and just |
Now they are hidden there: https://github.com/ecotoneframework/ecotone-dev/actions/runs/5181629323?pr=138 I also added |
This is amazing PR @jlabedo, thank you very much for putting your energy into that :) |
This PR will run benchmark on PR and compare to main branch.
It will comment on each PR with this template:
PR stats
ecotone benchmarks
symfony benchmarks
laravel benchmarks