[Issue 24336] New: Downcast to interfaces
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jan 12 01:42:07 UTC 2024
https://issues.dlang.org/show_bug.cgi?id=24336
Issue ID: 24336
Summary: Downcast to interfaces
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: bugzilla at digitalmars.com
deadalnix writes:
This is getting a bit more tricky, so I won't expand this one fully, but it is
also possible to do much better on this front as well. The obvious complication
that that interfaces allow for multiple inheritance.
The first obvious optimization is to consider the chain of leftmost (or
alternatively the longest chain, which allows to cull more candidates faster)
inheritance the primaries for the interface and eliminate the whole branch at
once using the same strategy as 3/.
Now we are left with possible secondaries match. Here, no possibility to remain
O(1), we'll have to loop over the other interfaces and repeat the matching
process. Thankfully very branch hierarchy are uncommon in practice, but even
then, we can use this one weird trick to dramatically cull out the search
space: bloom filters.
Make the bloom filter 64 bits and simply cull via (targetBloom &
aggregateBloom) == targetBloom and you can eliminate a good chunk of the search
right there.
https://forum.dlang.org/post/hteuczyclxajakrisxjd@forum.dlang.org
--
More information about the Digitalmars-d-bugs
mailing list