-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Better caching of prototypes #9742
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
Conversation
- Make IgnoredProto a cached type - Convert IgnroedProtos to WildcardTypes in wildApprox - Use `eql` instead of `equals` when hash-consing prototypes
test performance please |
performance test scheduled: 2 job(s) in queue, 1 running. |
Performance test finished successfully: Visit http://dotty-bench.epfl.ch/9742/ to see the changes. Benchmarks is based on merging with master (d11e137) |
This reverts commit 83e6ad4. Also, optimize trace further to be zero overhead # Conflicts: # compiler/src/dotty/tools/dotc/reporting/trace.scala
test performance please |
performance test scheduled: 2 job(s) in queue, 1 running. |
Performance test finished successfully: Visit http://dotty-bench.epfl.ch/9742/ to see the changes. Benchmarks is based on merging with master (101e620) |
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.
LGTM
(name eq that.name) && (memberProto eq that.memberProto) && (compat eq that.compat) && (privateOK == that.privateOK) | ||
case _ => | ||
false | ||
} |
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.
Does the slight difference between equals
and eql
have a semantic difference or only a performance difference? In any case, for maintainability, it is worth some explanation here.
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.
It's only for performance.eql
does a eq
on all recursive calls, knowing that all elements are already hash-consed. I'll add an explanation in one of the next PRs
eql
instead ofequals
when hash-consing prototypes