Spark: практика разработки высоконагруженных iOS-приложений Производительность мобильных приложений
Со-основатель и технический директор компании Readdle; iOS-разработчик с момента появления платформы; работал в мобильной индустрии во времена m68k с черно-белых экранов. Сфера интересов — веб-разработка, архитектура ПО, функциональное программирование, распределенные вычисления.
Тезисы
Известный закон Джеймса Завински гласит “Каждая программа пытается расширяться до тех пор, пока не сможет читать почту”.
В данном докладе будут рассмотрены следующие практические аспекты, возникшие при разработке популярного почтового клиента Spark (номинант “App Store Best Of 2015”):
- Высоконагруженные интерфейсы: рендеринг цепочек сообщений и списка писем — ключевых элементов почтового приложения с высокими требованиями к производительности. Разбор подходов, использующих UIKit, CoreText, AsyncDisplayKit, Core Graphics.
- Базы данных и поиск: работа с большими SQLite базами, оптимизация SQL-запросов, производительность полнотекстового поиска, опыт перехода с SQLite FTS4 на SQLite FTS5.
- Ускоряем Core Foundation: техники кэширования, производительность регулярных выражений, использование альтернативных библиотек (expat, libxml, libcurl), разгрузка applicationDidFinishLaunching, эффективная работа с многопоточностью.
- Работа в фоновом режиме и сетевое взаимодействие: энергосбережение с использованием облачной инфраструктуры; асимметричное шифрование почтовых сообщений; поддержка HTTP/2 для REST API, результаты тестирования алгоритма сжатия LZFSE.
Помимо практических аспектов, в докладе будет уделено внимание используемой в Spark методологии тестирования производительности и энергопотребления.