Best Subdivision Algorithm for certain objects?

So I know about Sub-D but what I'm not fully understanding is the effects of algorithm. Most the time I use Catmark.
Only because I'm unsure what the others do.
What would be the best algorithm to extract the most detail out of a genesis, or.. a couch? or a tree?
Comments
Generally CatMark - the others are there to try if things don't work with that (for example, a few items had winding order issues that would produce spikes with CatMark but they worked with the legacy version of Catmull Clark).