Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Оптимизация производительности приложений для iOS. Для профессионалов

Покупка
Артикул: 816888.01.99
Доступ онлайн
439 ₽
В корзину
Книга демонстрирует, как совершенствовать, увеличивать и оптимизировать производительность приложений для операционной системы iOS. Вы быстро научитесь создавать быстрые и отзывчивые приложения, пригодные для распространения на коммерческой основе. Эта книга охватывает множество общих и вместе с тем сложных проблем, возникающих при оптимизации производительности приложений для iPhone и iPad, и подробно описывает, как эффективно их решать. Она содержит массу практических знаний, приемов, советов и рекомендаций, которые помогут вам преуспеть в конкурентном мире разработки приложений для iOS. Издание предназначено для программистов разной квалификации, разрабатывающих мобильные приложения под iOS.
Во, Х. Оптимизация производительности приложений для iOS. Для профессионалов : практическое руководство / Х. Во ; пер. с англ. - 2-е изд. - Москва : ДМК Пресс, 2023. - 321 с. - ISBN 978-5-89818-512-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/2107185 (дата обращения: 06.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Оптимизация 
производительности 
приложений для 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  играет важную роль. 
Пользователям необходимо чувство, что их команды воспринимаются 
и исполняются почти мгновенно. Что, если при нажатии кнопки 
Доступ онлайн
439 ₽
В корзину