To add to my last post: while it's clear that Chipmunk is probably using a lot of the CPU time, Shark can still give valuable information as to where in Chipmunk the time is spent and the best way to speed it up. It might be as simple as changing some parameters. For our game Crayon Ball, we had 30 balls on the screen at any given time. Mostly settled and packed together. It used a lot of CPU on the iPhone and we were only using 1 iteration per step.
Poly shapes are going to generate more contact points than circles, meaning more constraints to solve and more iterations needed to make it look solid. If Shark tells you that most of the CPU time is spent in the solver (cpArbiterApplyImpulse) then there isn't going to be a whole lot you can do to speed it up other than to use fewer iterations.