2010-11-19 4 views
3

Я пытаюсь исследовать очень длительное время запуска для своего приложения и могу использовать некоторую помощь. Для запуска требуется около 6-7 секунд, и это слишком долго. Я не загружаю какие-либо наборы данных или что-то еще, но приложение является калькулятором, поэтому у моего xib есть много кнопок и изображений кнопок.Сокращение времени запуска iPhone

Я хотел бы использовать Инструменты (или что-то еще), чтобы анализировать, где все время расходуется, чтобы я мог оптимизировать, но документация для Инструментов на самом деле не дает мне подробностей о том, как использовать это для этой конкретной проблемы и/или как интерпретировать результаты.

Есть ли у вас какие-либо предложения по проверке этого? Указатель на руководство по использованию инструментов для этого? Видео iTunes U или что-то еще?

Любые предложения приветствуются!

Kenny

+1

Просто напоминание для тех, кто заинтересован в ответе, я специально не ищу, почему это медленно, я ищу предложение о том, где я могу узнать об использовании инструментов для профилирования, таких как инструменты, чтобы помочь мне отследить причина. Я ищу руководство для рыбалки, а не рыбу. :) –

+0

Прошло некоторое время с тех пор, как вы спросили ... вы, вероятно, решили эту конкретную проблему. Может быть, вы могли бы дать вам собственный ответ? – Palimondo

+1

Я не нашел отличного ответа о том, где _learn_ об использовании инструментов профилирования для определения замедлений. Я добавлю ответ ниже, который описывает, как я в конечном итоге уменьшаю время запуска моего приложения. –

ответ

1

Прежде чем делать какие-либо из вышеперечисленных предложений:

Является ли это 6-7 секунд во время работы с XCode? Или начать прямо, нажав на iPhone?

Отладчики и инструменты не помогут вам здесь, так как они просто добавляют к накладным расходам и не помогут в профилировании, поскольку они отравляют данные, которые вы увидите.

Edit:

С точки зрения профилирующих инструментов, вы можете посмотреть в использовании Shark: http://www.switchonthecode.com/tutorials/using-shark-to-performance-tune-your-iphone-app

Это довольно простой в использовании в целом. Это само собой разумеется.

+0

Нет, это 6-7 секунд после запуска по телефону. Нет отладчика, нет xcode и т. Д. Я понимаю, что профилировщики добавят накладные расходы, но они по-прежнему весьма полезны для поиска узких мест и тому подобного. –

1

Вот несколько предложений:

  • вам нужно все эти кнопки загружая одновременно?
  • Вы (более) используете прозрачные пленки в своих изображениях?
  • - это изображения требуемого размера? Растяжение (изменение размера) требует времени для вычисления
  • Выполняет ли какая-либо операция, которая блокирует основной поток?
+0

Я попытался удалить все кнопки, и он только бреется на 1 секунду от времени начала. Я считаю, что я пробовал все очевидные потенциальные спады, но я не нахожу преступника. Вот почему я не ищу предложения о том, что не так, но я ищу указатели, где я могу научиться делать профилирование, чтобы я мог правильно исследовать это и найти, где происходит замедление. –

+0

Ответьте на все ваши вопросы. Нет, мне не нужны все кнопки спереди, но даже если я нажимаю кнопки 0, все равно требуется 5-6 секунд. На изображениях кнопок есть прозрачные пленки, но я удалил их из загрузки. Других прозрачных изображений нет. Все используемые изображения используются в их собственном размере, без изменения размера. Никакие операции не блокируют основной поток. Я создаю задачу в фоновом режиме, но я проверял, что она не блокирует основной поток, и я также просто прокомментировал это, чтобы удалить вопрос. Без кнопок сбрасывается 1 сек. Другие, ничего примечательного. –

0

Я бы измерил время запуска пустого фиктивного приложения (возможно, шаблона приложения на основе XCode Window) на вашем фактическом устройстве (отключено отладчик). Затем начните добавлять код инициализации, представления и объекты из вашего приложения в это фиктивное приложение, пока не найдете то, что больше всего замедляет время запуска.

2

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

Мое приложение - калькулятор, поэтому у него есть тонна кнопок. Сначала я думал, что это проблема с загрузкой кнопки, но, как я объяснил в комментариях выше, Paul, даже если я загрузил 0 кнопок, которые только сбрили на 1 секунду от времени запуска. После изменения многих мелочей я смог сэкономить 3 секунды с момента запуска, что было достаточно хорошим.

У меня было фоновое изображение, которое было красивым текстурированным градиентно-иш-изображением. Я уменьшил размер файла на нем (изменил текстуру, экспортировал ее с различными опциями).

Я пошел от загрузки 100 кнопок вверх (это калькулятор), чтобы загрузить около 15, но попытался сделать это тайным способом, чтобы пользователь не заметил. Около 50 кнопок не видны, чтобы начать все равно, потому что вы должны нажать кнопку Shift, чтобы увидеть их, чтобы они были легко ленивы. Остальные видны, но я решил, что пользователь не будет использовать большинство из них при запуске, потому что сначала им нужно набрать несколько цифр. Поэтому я оставил все кнопки с числовыми значками и кнопку «Очистить» в xib, чтобы они загружались при запуске, но удаляли все остальное из xib.

Это оставило меня с большой пустой областью на экране, и на самом деле вы могли видеть кнопки, заполняющие пустую область, когда я лениво их загружал (заполняясь очень быстро, но вы могли видеть пустую область, а затем появлялись все кнопки). Поэтому я обновил графику градиента фона, чтобы включить изображения кнопок. Кажется, что кнопки там есть, но это не так, поэтому, если пользователь не нажимает поддельную кнопку в течение 2 секунд, они никогда не замечают проблемы ... и обычно они просто пытаются снова нажать эту кнопку, и к тому времени она обычно была лениво загружается и поэтому работает.

Смежные вопросы