== Quote from Rounin ([email protected])'s article > Complicating the code by avoiding associative arrays isn't really an option, > though, as the whole point of writing the program was comparing D to Python in > terms of simplicity.
How about using a library defined associative array? As I've mentioned several times here before, D's current builtin associative array implementation interacts horribly with the GC. This is true both in terms of speed and memory usage. Neither D's GC nor its AA implementation is that bad per se, but the AA implementation seems to expose all the weaknesses in the GC, such that the result when using large AAs is laughably bad. I think eventually we need to completely redesign and rewrite it, or at least put a sealed implementation in std.container that's more geared towards huge AAs. My RandAA can be several times faster than the builtin AA when dealing with huge arrays (purely due to memory management overhead), and some tweaking by others in the community has produced an even faster version. Furthermore, it doesn't create tons of heap fragmentation and false pointers for the GC. I've solved out of memory errors with the builtin AA in some small projects just by swapping in RandAA for it. (See http://dsource.org/projects/aa)
