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
[Experiment]: set max_methods = 1
#48320
Conversation
@nanosoldier |
@nanosoldier |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. |
While nothing looks like it regressed, it is interesting how much worse that made the performance of the inference benchmarks themselves. |
This regressed:
But yeah, interesting to see inference itself being so sensitive to this. |
Interesting. We can have module-wide |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. |
🎉 😆 |
I'm not entirely surprised: abstract inference is much slower than concrete, and this may result in more abstract inference because there may be fewer cases where it can determine a concrete return type. Which might mean a reduction of some invalidation-vulnerabilities, but an increase in others. |
Well, the |
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
People are writing a lot of methods with too strict type parameters that do not have a fallback which causes breakage since the types of empty containers can now change due to explicit use of inference in e.g.
ç |
Does it make sense to merge this on master? Or maybe with max_methods=2? I'm trying to understand this, want to know all potentially helpful tricks to reduce latency, and if I understand correctly =1 is one of them, fastest/least conservative, but =2 might always work?
We don't want to break packages, but there's no such promise on master, so I'm thinking would merging =1 there help to force users to fix their code, and then we would change to =2 (or =3 for the release on 1.10, which is still far off). E.g. CairoMakie could set at module level. Does this also apply to non-package code, which I guess can't set max_methods? When does =4 make sense? |
This is just to see the effect of this change on Base tests, PkgEval, benchmarks etc.
Advantages of lowering this:
Disadvantages: