Сокращение времени запуска приложения iPhone - PullRequest
3 голосов
/ 20 ноября 2010

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

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

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

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

Кенни

Ответы [ 4 ]

2 голосов
/ 14 августа 2011

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

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

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

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

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

1 голос
/ 20 ноября 2010

Перед выполнением любого из вышеперечисленных предложений:

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

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

Edit:

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

Это довольно просто для использования в целом. Это что-то самоочевидное.

1 голос
/ 20 ноября 2010

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

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

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

...