Very good, especially given perforce's competition (cvs, svn, etc) over most of its life, but no, not as good as Git. I can't speak to hg.
While some of this is off-base (the p4 shelf is now an old feature, no, you can't make a dvcs behave just like a vcs, and it seems silly to knock p4 for xcode dropping support) the choice bits about p4 merging headaches are accurate.
I don't think there's anything inherent to a distributed version control system that makes it naturally superior at merging than a centralized system like perforce. Rather, the data models adopted by many dvcs's lend themselves to superior branch and merge tracking.
Perforce branch mappings? A cumbersome alternative to git's pointers and directed graph approach.
One key advantage of git over perforce, tracking code through refactoring, has nothing to do with git's status as a distributed version control, but rather the fact that it looks at blobs of content on something of an equal footing with files themselves.
For a biased comparison of git vs. perforce. I also find it telling that perforce has itself jumped on the gitwagon.