I wrote this for a small game I'm updating, which has about 30 objects colliding. However in my situation because it has so few objects the overhead is greater than the time saved. This system works really well when there are many objects.
See if you can use a regular quadTree if you can find a way to do it. It'll be faster than this.
I don't know about the _most_ efficient method. That is a field of research bigger than my weekend project.
Good luck.