Существуют ли инструменты профилирования времени без выборки для приложений iPhone?

Я пробовал Instruments и Shark для профилирования приложения для iPhone, но оба используют метод выборки данных, регулярно делая скриншоты стеков потоков.

Я бы предпочел иметь инструмент профилирования полного охвата, который записывал бы каждый вызов функции и время, затраченное на функции и их подпрограммы. Это кажется интуитивно лучше, чем получение образцов. Что-то вроде AQtime для Windows было бы здорово.

Итак, мои вопросы:

  1. Можно ли доверять профилированию на основе выборки и быть таким же полезным, как профилирование на основе вызовов функций?
  2. Могут ли инструменты или Shark выполнять этот тип профилирования?
  3. Доступны ли другие инструменты, которые были бы ближе к тому, что я хочу?

person squelart    schedule 18.09.2009    source источник
comment
Профилирование на основе выборки не обязательно менее точное, чем профилирование на основе вызовов функций. Профилирование на основе вызовов функций будет использовать больше ресурсов, чем на основе выборки, и это может создать узкие места, которых не было до включения профилирования.   -  person rpetrich    schedule 18.09.2009
comment
Если образцы стека берутся в то время, когда это происходит медленно, то вам не нужно много из них, чтобы найти узкие места. Точность времени - не проблема. Проблема заключается в том, чтобы найти проблемы. Просто поищите адреса сайтов для звонков, которые встречаются ›в 1 образце. Если есть какие-то из тех, которые вы могли бы избежать, вы гарантированно получите отличное ускорение.   -  person Mike Dunlavey    schedule 22.10.2009
comment
... ЭТО показывает, как это работает: stackoverflow.com/questions/406760/   -  person Mike Dunlavey    schedule 22.10.2009


Ответы (2)


Я обнаружил, что профилирование времени, используемое Shark, очень точно определяет узкие места в вашем коде. Вы можете настроить интервал выборки, чтобы он был более точным, открыв редактор Mini Config с помощью Config | Show Mini Config Editor и уменьшив время выборки.

Инструменты в Xcode 3.2 также теперь имеют хороший инструмент Time Profiler, хотя он только для Mac. Я обнаружил, что инструменты хорошо подходят для профилирования, но могут отбрасывать образцы, если система находится под большой нагрузкой. Как правило, я начинаю с инструментов, учитывая, насколько легко ими пользоваться, а затем перехожу к Shark, если мне нужно более подробное представление о том, что происходит.

Если вы действительно хотите профилировать на основе вызовов функций, я бы посмотрел на DTrace. Я написал пару статей о настройке приложений Какао с помощью DTrace здесь и здесь. Последний даже показывает пример настройки времени запуска приложения iPhone с помощью специального сценария DTrace.

К сожалению, в настоящее время DTrace не работает на самом iPhone, но вы все равно можете собрать много интересной информации с его помощью, запустив свое приложение в симуляторе. Несмотря на то, что точная информация о времени будет далека от того, что находится на устройстве, точное знание того, какие методы выполняются, сколько раз и в каком порядке, может дать некоторые подсказки относительно того, где оптимизировать. Я использую DTrace, чтобы по-другому взглянуть на информацию, собранную Shark and Instruments, и чтобы ответить на конкретные вопросы о моем приложении.

person Brad Larson    schedule 18.09.2009

Да, выборка стека может быть нелогичной, и да, ей можно доверять. Посмотрите эту ссылку и первый комментарий.

Дело не в том, чтобы спросить: «Сколько времени это заняло?»

Речь идет о вопросе (сомнительным голосом): «Была ли эта наносекунда необходимой

person Mike Dunlavey    schedule 18.09.2009