DMD internal: appendToModuleMember performance

Johan Engelen via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 22 14:38:41 PDT 2016


On Friday, 22 April 2016 at 18:51:57 UTC, David Nadlinger wrote:
> On Saturday, 16 April 2016 at 13:58:28 UTC, Johan Engelen wrote:
>>
>> In rare cases, symbols are removed from the members list, so 
>> the shadow data structure needs the ability to delete elements.
>
> Bloom filters can have false positives anyway. As long as 
> elements are not removed too frequently (what do your numbers 
> say?), the performance impact of doing a full linear search in 
> those cases shouldn't be too bad.

The false-positive nature of Bloom filters makes them unsuited, I 
think, unless we can make the chance of a false-positive very low 
for lists that are very big, my testcase has a list size of 140k 
elements. It needs something scalable, otherwise there is no 
size-benefit. Wikipedia leads me to this: 
http://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf

I don't understand exactly what you mean; do you propose to 
resort to linear search after a removal happened? Or only do a 
linear search when the shadow data structure says the item is 
present?
I don't know how often removals happen, but for the 140k elements 
list removals happens _very_ often. While compiling phobos, 
removals happen not for all modules, but for quite a few of them.

In any case, I wrote the code such that it is easy to change the 
underlying data structure and test the impact.


More information about the Digitalmars-d mailing list