Ok, so I might have built an exporter which can export 100s of commits per second;
second.maia:~/src/perl.clean$ time git-p4raw export-commits -n 400 git-p4raw: gathering export plan git-p4raw: exporting commits between 525 and 924 100% [===============================================================]D 0h00m00sgit-p4raw: Now checkpointing. warning: Not updating refs/heads/p4/perl (new tip ef9eefa4f9098fbcc59c2aba28c73f4e071fe88f does not contain 5ec5d678e03468a8d1d3cb0b3863aacb4ba75233) warning: Not updating refs/heads/p4/ansiperl (new tip d869d2901d6cf3197af2842a1cd2aca6fcea7024 does not contain c864495f8aa5c60a65eec5f015666b8f3ea5ae96) warning: Not updating refs/heads/p4/win32/perl (new tip 15d3ab12d6f67a93f4836715f854ade61f9f6030 does not contain 1e696528467d711508235105c2294a1911fc12ad) git-p4raw: waited 1s for p4raw.8790.marks to be created real 0m2.528s user 0m0.636s sys 0m0.056s maia:~/src/perl.clean$
However there are some changes which are just begging to be made ... I've added a customization to the part which returns a commit message from a perforce change. This is taking much of the older in-band data, back into its correct header places.
One of the common practices through the history is to refer to other changes by numbers. So, I made the add extra links to the commits. As the model of git-fast-import is to just fire the objects at it and let it calculate the SHA1, this required a hack to git-fast-import. Hack it may well be, but it looks like it works.
Update: GitTorrent references file