I have been using Perforce for a long time and recently I also started to use GIT. Here is my "objective" opinion:
Perforce features:
- GUI tools seem to be more feature rich (e.g. Time lapse view, Revision graph)
- Speed when syncing to head revision (no overhead of transferring whole history)
- Eclipse/Visual Studio Integration is really nice
- You can develop multiple features in one branch per Changelist (I am still not 100% sure if this is an advantage over GIT)
- You can "spy" what other developers are doing - what kind of files they have checked out.
GIT features:
- I got impressions that GIT command line is much simpler than Perforce (init/clone, add, commit. No configuration of complex Workspaces)
- Speed when accessing project history after a checkout (comes at a cost of copying whole history when syncing)
- Offline mode (developers will not complain that unreachable P4 server will prohibit them from coding)
- Creating a new branches is much faster
- The "main" GIT server does not need plenty of TBytes of storage, because each developer can have it's own local sandbox
- GIT is OpenSource - no Licensing fees
- If your Company is contributing also to OpenSource projects then sharing patches is way much easier with GIT
Overall for OpenSource/Distributed projects I would always recommend GIT, because it is more like a P2P application and everyone can participate in development. For example, I remember that when I was doing remote development with Perforce I was syncing 4GB Projects over 1Mbps link once in a week. Alot of time was simply wasted because of that. Also we needed set up VPN to do that.
If you have a small company and P4 server will be always up then I would say that Perforce is also a very good option.