Why do you think it's slower than bounding box method? I think it's not that easy to say which is faster or slower without making real tests. Also, the code I posted is not optimized. I found this article which does a good job at that. Let me quote the conclusion:
[...] looks like bounding boxes are faster when there is no collision, while bounding circles are faster when there is a collision. So it really comes down to the nature of your game. If objects are collision checked often and are usually not colliding (such as a projectile flying through the air), it is probably faster to use bounding box checks.
One last note. If you store the squared radius of each object, instead of calculating it each time, you can speed it up a bit. I haven't ran that test, though I imagine it could put the distance-based collision back ahead of the bounding box.
So again, I think that if you really need to squeeze the last drop out of performance for your game, the best approach is to test and measure each method in your game. Therefore you can be certain that one is faster than the other for your game.
Also, games with lots of objects that are usually not colliding may benefit from spatial partitioning. With this technique, you only check collisions between objects in the same spatial partition, so depending on the game you can avoid lots of collision checks and save CPU time.
Let us know the results if you do the tests!