digitalmars.D.bugs - [Issue 24336] New: Downcast to interfaces
- d-bugmail puremagic.com (31/31) Jan 11 https://issues.dlang.org/show_bug.cgi?id=24336
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 puremagic.com Reporter: bugzilla 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 --
Jan 11