Существуют ли инструменты для определения времени без выборки для приложений iPhone? - PullRequest
2 голосов
/ 18 сентября 2009

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 сентября 2009

Я обнаружил, что профилирование времени, используемое 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, и ответить на конкретные вопросы о моем приложении.

1 голос
/ 18 сентября 2009

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

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

Речь идет о том, чтобы спросить (сомнительным голосом) "Была ли эта наносекунда необходима ?"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...