A bottleneck I've hit is querying Quadtrees for finding nearby locations. It's much faster than comparing each location, but I'd like to find faster methods that work for moving locations. Profiles done have shown that this factor is the responsible for nearly 99% of all cpu time, so even microperformance improvements to the concept or alternative ideas are welcome.
An alternative I found was Spatial Hashing.
The basics work as such: If I was given a 100x100 world, it would be split into 10x10 chunks. Each chunk holds all the entities in its 10x10 world area. Searching for them is as simple as only getting the chunks guaranteed to have neighbors. For example, searching a 3x3 square (43, 43).
I did a bit more optimization and had chunks that were encompassed by a search radius to automatically add them all and only to check the distance of individuals on the edges of the 3x3 surrounding (43, 43). Some profiling shows that this spatial hashing is at least 600-2000% faster in my case, and it was exceedingly simple,