Я обнаружил, что профилирование времени, используемое Shark, очень точно определяет ваши узкие места в вашем коде. Вы можете настроить интервал выборки, чтобы он был более детальным, показав редактор Mini Config с помощью Config | Show Mini Config Editor
и уменьшив время выборки.
Инструменты в Xcode 3.2 также теперь имеют хороший инструмент Time Profiler, хотя это только для Mac. Я обнаружил, что Instruments хорошо работает для профилирования, но он может отбрасывать сэмплы, если система находится под большой нагрузкой. Обычно я начинаю с Instruments, учитывая, насколько легко им пользоваться, затем перехожу к Shark, если мне нужно более детальное представление о происходящем.
Если вы действительно хотите выполнять профилирование на основе вызовов функций, я бы посмотрел на DTrace. Я написал пару статей о настройке приложений Какао, используя DTrace здесь и здесь . Последний даже показывает пример настройки времени запуска приложения iPhone с помощью специального сценария DTrace.
К сожалению, DTrace в настоящее время не работает на самом iPhone, но вы все равно можете собрать много интересной информации, используя его, запустив приложение в симуляторе. В то время как точная информация о времени не будет близко к тому, что находится на устройстве, точное знание того, какие методы выполняются, сколько раз и в каком порядке, может дать некоторые подсказки относительно того, где оптимизировать. Я использую DTrace, чтобы предоставить другую точку зрения на информацию, собранную Shark and Instruments, и ответить на конкретные вопросы о моем приложении.