Оптимизация производительности приложений для iOS. Для профессионалов
Покупка
Тематика:
Другие операционные системы
Издательство:
ДМК Пресс
Автор:
Во Ханг
Год издания: 2023
Кол-во страниц: 321
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-89818-512-1
Артикул: 816888.01.99
Доступ онлайн
В корзину
Книга демонстрирует, как совершенствовать, увеличивать и оптимизировать производительность приложений для операционной системы iOS. Вы быстро научитесь создавать быстрые и отзывчивые приложения, пригодные для распространения на коммерческой основе. Эта книга охватывает множество общих и вместе с тем сложных проблем, возникающих при оптимизации производительности приложений для iPhone и iPad, и подробно описывает, как эффективно их решать. Она содержит массу практических знаний, приемов, советов и рекомендаций, которые помогут вам преуспеть в конкурентном мире разработки приложений для iOS.
Издание предназначено для программистов разной квалификации, разрабатывающих мобильные приложения под iOS.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Мобильная разработка
- Операционные системы и программы-оболочки
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Оптимизация производительности приложений для iOS Для профессионалов Ханг Во
Pro iOS Apps Performance Optimization Khang Vo
Оптимизация производительности приложений для iOS Для профессионалов Москва, 2023 Ханг Во Издание рекомендовано в качестве учебного пособия для студентов технических вузов 2-е издание, электронное
УДК 004.451iOS ББК 32.973.26-018.2 В61 В61 Во, Ханг. Оптимизация производительности приложений для iOS. Для профессионалов / Х. Во ; пер. с англ. — 2-е изд., эл. — 1 файл pdf : 321 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-512-1 Книга демонстрирует, как совершенствовать, увеличивать и оптимизировать производительность приложений для операционной системы iOS. Вы быстро научитесь создавать быстрые и отзывчивые приложения, пригодные для распространения на коммерческой основе. Эта книга охватывает множество общих и вместе с тем сложных проблем, возникающих при оптимизации производительности приложений для iPhone и iPad, и подробно описывает, как эффективно их решать. Она содержит массу практических знаний, приемов, советов и рекомендаций, которые помогут вам преуспеть в конкурентном мире разработки приложений для iOS. Издание предназначено для программистов разной квалификации, разрабатывающих мобильные приложения под iOS. УДК 004.451iOS ББК 32.973.26-018.2 Электронное издание на основе печатного издания: Оптимизация производительности приложений для iOS. Для профессионалов / Х. Во ; пер. с англ. — Москва : ДМК Пресс, 2013. — 320 с. — ISBN 978-5-94074-856-4. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-512-1 © 2011 by Khang Vo © Оформление, перевод ДМК Пресс, 2013
Посвящается моей девушке, Хуэйн Нган (Ngan Huynh), с благодарностью за любовь, большую поддержку и воодушевление
Содержание Содержание Об авторе ........................................................................................ 11 О техническом консультанте ..................................................... 12 Благодарности .............................................................................. 13 Предисловие ................................................................................. 14 Глава 1. Введение в оптимизацию производительности iOS .................................................................................................... 15 Новая эра смартфонов .................................................................. 15 Почему важна производительность ............................................... 15 Для кого предназначена эта книга ................................................. 16 Стиль автора ................................................................................. 16 Что вам потребуется ..................................................................... 17 Как пользоваться этой книгой ....................................................... 18 Обзор книги .................................................................................. 18 Загружаемые примеры ................................................................. 20 Обратная связь ............................................................................. 20 Глава 2. Оценка производительности с использованием эмулятора и действующего устройства ..................................................................................... 21 Эмулятор и действующее устройство ............................................ 22 Память и производительность ....................................................... 23 Инструменты ................................................................................. 23 Основные инструменты ............................................................ 24 Инструмент Allocations (Распределение памяти) ...................... 25 Унаследованный код ................................................................ 29 Инструменты оценки производительности ............................... 34 Выводы ......................................................................................... 55 Упражнения .............................................................................. 55
Содержание Глава 3. Увеличение производительности UITableView ..................................................................................... 57 Предисловие к примерам .............................................................. 58 Повторный обзор инструментов ............................................... 58 Первый пример ........................................................................ 59 Второй пример ......................................................................... 69 Чему учат данные примеры ...................................................... 73 Другие приемы.............................................................................. 74 Сохранение значения высоты................................................... 74 Прозрачность ........................................................................... 75 Отключение графических эффектов ......................................... 76 Производительность редактирования/переупорядочивания ......... 76 Выводы ......................................................................................... 77 Упражнения ................................................................................... 79 Глава 4. Кеширование изображений и данных ..................... 80 Разница производительности обработки сети, файлов и памяти ... 80 Выявление узкого места .......................................................... 81 Введение в кеширование .............................................................. 83 Что такое кеширование? .......................................................... 83 Попадание в кеш ...................................................................... 84 Промах кеша ............................................................................ 84 Издержки извлечения .............................................................. 84 Издержки хранения .................................................................. 85 Недостоверность кеша ............................................................. 85 Политика вытеснения ............................................................... 86 Алгоритмы кеширования .......................................................... 87 Оценка кеша ............................................................................ 94 Что следует кешировать ................................................................ 95 Где хранить изображения ......................................................... 95 Кеширование данных ............................................................. 100 Выводы ....................................................................................... 109 Упражнения ................................................................................. 110 Глава 5. Оптимизация алгоритмов и структур данных ...... 111 Первый пример ........................................................................... 111 Теоретические вопросы тестирования производительности алгоритмов ................................................................................. 114 Как измерить «большое О» ..................................................... 114 Сведения о реализации ......................................................... 116
Содержание «Большое О» известных алгоритмов ....................................... 117 Практическая оценка ................................................................... 118 Структуры данных и алгоритмы ................................................... 119 Структуры данных Cocoa Touch .............................................. 120 Прочие структуры данных....................................................... 132 Двоичное дерево ................................................................... 147 Граф ....................................................................................... 152 Прочие алгоритмы и подходы к решению проблем ...................... 159 Рекурсия ................................................................................ 160 Парсер SAX/DOM для xml-парсинга ...................................... 161 Выводы ...................................................................................... 163 Упражнения ................................................................................. 164 Глава 6. Ускорение доступа к данным с использованием приемов многопоточного программирования .................... 166 Что такое потоки и многопоточность ........................................... 166 Терминология ............................................................................. 168 Первый пример ........................................................................... 169 Преимущества многопоточности ................................................ 172 Создание многопоточных приложений ........................................ 174 Создание потока .................................................................... 174 Настройка потока .................................................................. 182 Начало работы потока ............................................................ 183 Опасности, связанные с потоками ......................................... 187 Синхронизация потоков ......................................................... 205 Альтернативы потокам ........................................................... 207 Инструмент Thread States (Состояние потоков) .......................... 211 Выводы ....................................................................................... 212 Упражнения ................................................................................. 212 Глава 7. Оптимизация использования памяти .................... 213 Краткий обзор ............................................................................. 214 Старая политика владения объектом...................................... 214 Автоматическое освобождение объектов ............................... 214 Пул автоматически освобождаемых объектов ........................ 215 Автоматический подсчет ссылок ................................................. 217 Как настроить проект в XCode ................................................ 217 Политика автоматического подсчета ссылок .......................... 218 Новые модификаторы для автоматического подсчета ссылок ... 219 Свойства объектов ................................................................. 220 Дополнительные вопросы ........................................................... 221
Содержание Удерживающие циклические ссылки ...................................... 221 Слабые ссылки ...................................................................... 222 UIViewController ........................................................................... 222 Процесс загрузки представления ........................................... 223 Процесс выгрузки представления .......................................... 224 Отображение и сокрытие представлений ............................... 225 Копирование объектов ................................................................ 226 Поверхностное и полное копирование ................................... 227 Реализация полного копирования .......................................... 227 Интегрирование метода копирования в объект ...................... 229 Дополнительные возможности пула автоматически освобождаемых объектов ........................................................... 230 Пул автоматически освобождаемых объектов и стек .............. 230 Пулы автоматически освобождаемых объектов и потоки ........ 231 Влияние пулов автоматически освобождаемых объектов на производительность .......................................................... 231 Инструменты ............................................................................... 232 Статический анализатор ........................................................ 232 Инструмент Leaks (Утечки памяти) ......................................... 233 Объекты-зомби ...................................................................... 233 Инструмент Allocations (Распределение памяти) .................... 234 Уровни предупреждений о нехватке памяти ........................... 235 Выводы ....................................................................................... 235 Упражнения ................................................................................. 235 Глава 8. Использование приемов многопоточного программирования и эффективного управления памятью в многозадачных приложениях .............................. 236 Что представляет собой многозадачность в iPhone ..................... 236 Жизненный цикл многозадачности ......................................... 237 Преимущества и издержки многозадачности ......................... 244 Фоновые службы ......................................................................... 245 Служба воспроизведения звука ............................................. 245 Отображение экрана-заставки ............................................... 247 Служба определения географического местоположения ....... 247 Локальное уведомление ......................................................... 251 IP-телефония (VOIP) ............................................................... 252 Выполнение в фоновом режиме ............................................. 252 На что обратить внимание при работе в фоновом режиме ...... 255 Уведомления о системных изменениях .................................. 257 Совместимость с разными версиями iOS .................................... 258
Содержание Выводы ....................................................................................... 259 Упражнения ................................................................................. 259 Глава 9. Улучшение производительности с использованием C/C++ .......................................................... 260 Преимущества и недостатки ....................................................... 261 Основы программирования на C и C++ ........................................ 262 Программирование на C ........................................................ 262 Программирование на C++ .................................................... 275 Практический пример ................................................................. 282 SQLite ..................................................................................... 282 Интеграция C++ в приложение ............................................... 284 Выводы ....................................................................................... 284 Упражнения ................................................................................. 285 Глава 10. Сравнение проблем производительности устройств на базе Android и Windows Phone ........................ 286 Общий обзор ............................................................................... 287 Тестирование в эмуляторе и на действующих устройствах .......... 288 Эмулятор и действующие устройства..................................... 288 Оценка производительности .................................................. 289 Производительность ListView ...................................................... 291 Android ................................................................................... 292 Windows Phone ....................................................................... 295 Кеширование данных .................................................................. 296 Android ................................................................................... 297 Windows Phone ....................................................................... 299 Структуры данных и алгоритмы ................................................... 301 Многопоточность ........................................................................ 302 Android ................................................................................... 303 Windows Phone ....................................................................... 306 Управление памятью ................................................................... 307 Andriod ................................................................................... 308 Windows Phone ...................................................................... 309 Многозадачность ........................................................................ 311 Android ................................................................................... 311 Поддержка программирования на C/C++ .................................... 312 Выводы ....................................................................................... 313 Упражнения ................................................................................. 314 Предметный указатель ............................................................. 315
Об авторе Во Ханг (Khang Vo) – программист и предприниматель, любит работать с новейшими технологиями и продуктами. Занимается разработками для платформы iOS с 2009 года. Ему нравится делиться свои ми идеями и обсуждать различные технические и организационные аспекты, которые помогают вывести потребителей на новый уровень. В основном он занимается созданием и продажей приложений в Apple App Store и Android Market. В настоящее время он также является студентом университета Карнеги-Меллона.
О техническом консультанте Эван Койн Мэлони (Evan Coyne Maloney) учился программировать самостоятельно, после того как получил в наследство компьютер Apple IIe. Будучи подростком, в середине 1980-х он опубликовал операционную систему для линейки компьютеров Apple II, которая называлась FoscilDOS и была широко освещена журналами «Byte» и «A+». В 1994 го ду Эван начал заниматься разработкой программного обеспечния для Интернета и создал чат «KeepTalk- ing» – первую браузерную чат-систему. В 1996-м Эван написал сетевую игру «DarkHorse», имитирующую политическую кампанию, для MSNBC.com. Во время президенсткой кампании, проходившей в том же году, было зафиксировано много миллионов человеко-часов, проведенных в ней, и она даже была использована на занятиях по политологии в высших учебных заведениях и колледжах. С 2001-го Эван посвятил себя торговле мобильным контентом. Он считается автором и создателем нескольких первых версий приложений для iPhone и iPad, удостоенных награды News Pro, учрежденной агентством « Reuters». В 2010-м Эван присоединился к «Gilt Groupe», где сейчас работает главным инженером высокопопулярных приложений iOS.
Благодарности Автор выражает благодарность Стиву Энглину (Steve Anglin), предложившему идею создания этой книги и помогавшему в начале пути. Автор также благодарит Эвана Мэлони (Evan Maloney) за полезные предложения, касающиеся технической стороны книги. Эван во многом помог при ее написании. Автор также признателен Тому Уэлшу (Tom Welsh) за помощь в создании простого и понятного читателю текста. Он предложил большое количество замечательных идей, которые привели книгу к этому окончательному варианту. Автор благодарен Корбину Кол- линзу (Corbin Collins) за его четкие и исчерпывающие ответы на вопросы. Большое спасибо разработчикам и всем, кто помогал справиться с техническими трудностями в процессе написания книги. Это позволило понять, чего не хватает разработчикам и как помочь им обрести необходимые знания и навыки.
Предисловие Эта книга призвана помочь вам отточить навыки разработки для iOS в узкой области: оптимизации производительности. Она предназначена для тех, кто уже обладает базовыми навыками в разработке для платформы iOS и желает создавать лучшие приложения. Одержимый вопросами производительности приложений, я потратил массу времени на изучение и применение различных приемов оптимизации приложений в различных платформах, таких как веб и смартфоны. Мне нравится дискутировать на эту тему с людьми. Проводя много времени на форумах и в сообществах iOS, таких как Stack Overflow и Apple Developer Forum, я понял, что большинство разработчиков iOS задают одни и те же вопросы о том, как улучшить производительность своих приложений. Я подумал, что было бы полезно собрать наиболее общие из этих вопросов в хорошо написанную и структурированную книгу, чтобы с легкостью можно было получить полное представление о проблемах оптимизации проиводительности приложений для платформы iOS. Такова была моя мотивация для написания этой книги, я сделал все возможное, чтобы охватить самые распространенные проблемы и ошибки, встречающиеся разработчикам. Кроме того, я встречал и отмечал в своих заметках множество проблем, общих для платформ iOS, Android и Windows Phone. Последняя глава основана на этих заметках. Я думаю, что она действительно будет полезна тем, кто желает работать на этих трех платформах или перейти с одной платформы на другую. При работе с острыми проблемами производительности полезно рассмотреть их с разных сторон и выработать компромисс между производительностью и сложностью реализации выбранного решения. Бывают такие незначительные проблемы, которые заставляют совершать множество ошибок, если заранее не знать возможных способов их решения. Я надеюсь, что эта книга поможет вам избежать таких ошибок и вместо этого потратить свое время на улучшение производительности и создание у пользователей лучших впечатлений о приложении.
Глава 1. Введение в оптимизацию производительности iOS В данной главе приводится общая информация о книге, включая следующее: кому эта книга послужит лучше всего; вопросы, которые охватывает книга; общая структура и стиль книги. Новая эра смартфонов В настоящее время рынок iOS насчитывает сотни тысяч приложений и сотни миллионов пользователей. Все это делает его достаточно обширным как для компании, так и для отдельного разработчика. Этот рынок рос в течение многих лет и будет еще расти, наряду со спросом на интересные и мощные приложения. Имея хорошую задумку для нового приложения, необходимо продумать ее исполнение, включая создание хорошего пользовательского интерфейса. Исходя из уникальных технических характеристик смартфонов , высокая производительность – необходимое условие для любого приложения. Пользователи хотят видеть приложение, которое быстро откликается на их действия, мгновенно считывает данные и отображает их. Почему важна производительность Оптимизация производительности заключается не только в разработке оптимальных алгоритмов, структур данных и приемов эффективного управления памятью, но и в том, чтобы создать у человека ощущение, что приложение отвечает на любое его действие настолько быстро, насколько это возможно. Таким образом, оптимизация производительности приложений для iPhone играет важную роль. Пользователям необходимо чувство, что их команды воспринимаются и исполняются почти мгновенно. Что, если при нажатии кнопки
Доступ онлайн
В корзину