On Tuesday, 6 May 2014 at 00:30:10 UTC, Brian Schott wrote:

These are my biggest concerns with the allocator API:

[Snip]

3. GC.removeRange is one of the slowest functions I've ever used. My allocator-backed binary tree implementation took 14 seconds to load a very large data set (compared to RedBlackTree's 35 seconds) and then spent the next five minutes in GC.removeRange before I got bored and killed it.

I've just created a PR [1] which changes GC addRange/removeRange to use a treap instead of an unsorted array which you might be interested in testing. It should change your use case of "add N ranges afterwards remove those N ranges" from taking O(N^2) time to O(N log N) time.

It would be nice to have a real-world comparison between the enhancement and existing implementation.

[1] https://github.com/D-Programming-Language/druntime/pull/788

Reply via email to