-
Notifications
You must be signed in to change notification settings - Fork 427
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
Recipe rendering very slow in certain cases #5224
Comments
cc @xhochy, @h-vetinari since you have the "pleasure" dealing with this issue when maintaining I've proposed gh-5225 to treat some of the symptoms of this issue. |
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
This is a performance regression benchmark for conda#5224 Signed-off-by: Marcel Bargull <[email protected]>
* Add benchmark for high pin_subpackage count recipe This is a performance regression benchmark for #5224 * Reduce size of test_pin_subpackage_benchmark * Use render(..., variants=...) not Config.variant --------- Signed-off-by: Marcel Bargull <[email protected]>
This issue is currently being investigated.
|
Closing this issue since most of the changes proposed here have been merged:
The only one that has not been merged yet is the one linked directly below, pending discussions and testing: |
Checklist
What happened?
Recipe rendering can be very slow in certain cases.
Recently, I was confronted with the case of https://github.com/conda-forge/arrow-cpp-feedstock for which a
conda-smithy rerender
apparently takes between 10 and 30 minutes.To put things into context:
The recipe
conda-smithy
(forlinux-64
/linux-aarch64
/linux-ppc64le
/osx-64
/osx-arm64
/win-64
),conda-forge-pinning
+.ci_support/migrations
),pin_subpackage
calls via jinja.Which resulted in roughly
.metadata.MetaData.get_recipe_text
,.jinja_context.pin_subpackage
,.metadata.select_lines
,.metadata.eval_selector
.(I stopped the tracing profiler at somepoint, so those numbers are extrapolated; the order of magnitude should match actual numbers, though.)
Higher call counts are to be expected due to
conda-build
's repeated partial parsing of the recipe.They are additionally unproportionally increased due to some oddities like
.metadata.MetaData.build_id
not being cached for.jinja_context.pin_subpackage
athttps://github.com/conda/conda-build/blob/24.1.2/conda_build/jinja_context.py#L406
which means each
pin_subpackage_against_outputs
call will re-extract the recipe text over and over again due tohttps://github.com/conda/conda-build/blob/24.1.2/conda_build/metadata.py#L1660 .
Conda Info
No response
Conda Config
No response
Conda list
No response
Additional Context
No response
The text was updated successfully, but these errors were encountered: