Typically there are two issues with the performance of MacCallGrind, the most significant one is the time to open a Callgrind file; followed by the time it takes to navigate or drill into the data once opened.
Callgrind files are textual and can be quite large and hierarchical, and as such can take some time to parse and build the in memory representation of the call tree, even though our parser is written in fairly optimised C.
The "Callgrind Profile Format, Version 1" is part of the Valgrind project, and can be found at http://valgrind.org/docs/manual/cl-format.html
As an example, here are some file sizes and the times taken to open them on a MacBook Pro 2.6Ghz Intel Core 2 Duo with 4GB RAM, a pre-unibody machine from 2008:
4.1MB = 2.5 seconds
8.2MB = 4.5 seconds
49.5MB = 19 seconds
138.9MB ~ 1 minute
An average PHP web request will be less than 10MB in size, perhaps less than half that in most cases. These files should open pretty quickly.
Longer running web requests or PHP CLI scripts of course may be of any size, but the above should give you an idea of how long they should take to open.
Once the file is open, the navigation should be pretty snappy, except where large amounts of data are being crunched to display across call information.
Ultimately the bigger and faster the machine, the faster callgrind files will open and be navigable.