ПРИКЛАДНОЙ АНАЛИЗ ЭФФЕКТИВНОСТИ АЛГОРИТМИЧЕСКИХ СТРУКТУР В СРЕДЕ МОБИЛЬНЫХ ОПЕРАЦИОННЫХ СИСТЕМ (ANDROID/IOS) - Студенческий научный форум

XVIII Международная студенческая научная конференция Студенческий научный форум - 2026

ПРИКЛАДНОЙ АНАЛИЗ ЭФФЕКТИВНОСТИ АЛГОРИТМИЧЕСКИХ СТРУКТУР В СРЕДЕ МОБИЛЬНЫХ ОПЕРАЦИОННЫХ СИСТЕМ (ANDROID/IOS)

Тодоров В.А. 1, Трусов Е.А. 1
1ФГБОУ Мелитопольский государственный университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение. Несмотря на то что современные смартфоны по вычислительной мощности уже догнали настольные компьютеры десятилетней давности, требования к качеству кода и его оптимизации не только не снизились, но и стали жестче. Это объясняется фундаментальным отличием мобильного устройства от стационарного компьютера: оно является замкнутой системой работающая в условиях жесткого дефицита ресурсов. Смартфон не имеет активного охлаждения и подключенного кабеля питания, поэтому каждая лишняя или неоптимизированная операция процессора приводит не только к миллисекундным задержкам, но и к потраченным миллиампер-часам емкости аккумулятора, для пользователя это означает снижение — автономности устройства.

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

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

Анализ последних исследований и публикаций

Проблематика производительности мобильных систем на протяжении последних лет активно исследуется как ведущими технологическими компаниями, включая Google и Apple, так и представителями академического сообщества.Например, в статье [1] сказано, что значительная часть исследований в данной области посвящена инструментальному анализу производительности, включая профилирование загрузки CPU, использования оперативной памяти и подсистем хранения данных.Полученные в рамках указанных исследований результаты показывают, что в ряде практических сценариев основным источником энергопотребления мобильного устройства является не графическая подсистема и не центральный процессор, а модуль беспроводной связи, активность которого определяется алгоритмами сетевого взаимодействия, реализованными в приложении.

Другое направление исследований сосредоточено на оптимизации графической части мобильных приложений. Практический опыт разработки для мобильных платформ демонстрирует эффективность алгоритмических техник, таких как обрезка невидимого контента и батчинг вызовов отрисовки [2]. По своей сути данные техники представляют собой прикладную реализацию алгоритмов обработки пространственных данных и оптимизации вычислительных запросов. В области управления памятью и структурами данных общепризнанным является факт преимущества массивов над связными списками благодаря лучшей локальности данных. Однако, существующие публикации часто носят общий характер и не всегда детально раскрывают физические причины этого явления применительно к конкретной архитектуре мобильных SoC (System on a Chip) на ARM, а также его количественное влияние на энергопотребление.

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

Цель исследования провести анализ практического применения классических алгоритмических структур и принципов их выбора при разработке мобильных приложений под платформы Android и iOS.На конкретных примерах (работа с памятью, поиск в БД, кэширование, построение интерфейса) продемонстрировать, как осознанный выбор алгоритмов и структур данных напрямую влияет на три главных показателя качества: мгновенный отклик на нажатие, плавность анимаций (60 FPS) и способность телефона дожить до вечера без подзарядки.

Методы исследования

Для рассмотрения данной темы использован комплекс методов исследования. Проведёнсравнительный анализ алгоритмической сложности (Big O notation) классических структур данных (массивов, связных списков, хеш-таблиц) в контексте мобильных приложений. Использован аппаратный анализ для простого объяснения влияния локальности данных на производительность кэш-памяти мобильных процессоров ARM. Выполнен анализ паттернов использования системных API (UI-thread, планировщики задач WorkManager/BackgroundTasks) для выявления критических с точки зрения производительности операций. Также применен метод анализа конкретных практических кейсов оптимизации, включая кэширование изображений, индексацию баз данных и алгоритмы расчета компоновки интерфейса.

Результаты исследования и их обсуждение.

Управление памятью и локальность данных.

Эксперементальные и прикладные данные указывают, что различия между массивами и связными списками наиболее явно проявляются не на уровне языка программирования, а на уровне аппаратной организации памяти мобильных устройств. Современные смартфоны используют многоуровневую иерархию кэш-памяти (L1, L2, L3), и именно характер размещения данных в памяти определяет реальную производительность алгоритмов.

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

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

Практическое различие хорошо проявляется в интерфейсных сценариях. При прокрутке списков в RecyclerView (Android) или UITableView (iOS), содержащих большие объемы данных, использование массивоподобных структур обеспечивает стабильную частоту кадров. Применение связных списков в аналогичных условиях может приводить к появлению кратковременных задержек, заметных пользователю. Аналогичные выводы представлены и в официальных рекомендациях по оптимизации производительности Android-приложений [3]. Дополнительным фактором является работа сборщика мусора в Android Runtime, который менее эффективно обрабатывает большое количество мелких разрозненных объектов по сравнению с единым непрерывным блоком памяти [8].

Алгоритмы поиска и кэширование.

Анализ операций поиска в мобильных приложениях показывает, что выбор алгоритма напрямую влияет не только на время отклика интерфейса, но и на энергопотребление устройства. В случае линейного поиска со сложностью O(n) время выполнения пропорционально количеству элементов в коллекции. Для таблиц, содержащих десятки или сотни тысяч записей, это может приводить к задержкам в сотни миллисекунд, особенно при выполнении операции в основном потоке.

Использование индексированных структур хранения данных принципиально меняет ситуацию. Создание индекса в локальной базе данных позволяет применять алгоритмы поиска с логарифмической сложностью O(log n), что сокращает время выполнения до нескольких миллисекунд. В мобильных условиях это особенно важно, поскольку кратковременная интенсивная работа процессора с последующим переходом в энергоэффективное состояние оказывается более выгодной, чем длительная нагрузка средней интенсивности [1].

Хеш-таблицы являются ключевым элементом механизмов кэширования. Они обеспечивают практически мгновенный доступ к данным и позволяют избегать повторных вычислений или сетевых запросов. Современные реализации HashMap в Android при большом количестве коллизий автоматически переходят от связного списка к сбалансированному дереву, что предотвращает деградацию производительности в худшем случае [6]. Для разработчика это подчеркивает необходимость корректной реализации методов hashCode() и equals() при использовании пользовательских объектов в качестве ключей.

Графовые алгоритмы и динамическое программирование.

Графовые модели широко применяются во внутренней архитектуре современных мобильных фреймворков. Например, системы внедрения зависимостей формируют ориентированные ациклические графы, в которых вершины соответствуют компонентам приложения, а ребра — их зависимостям. Для корректного создания объектов выполняется топологическая сортировка такого графа, а наличие цикла автоматически трактуется как архитектурная ошибка.

Методы динамического программирования используются и в задачах компоновки интерфейсов. Современные системы верстки анализируют множество возможных вариантов размещения элементов и выбирают оптимальный с точки зрения заданных ограничений. В Android эту роль выполняет решатель линейных ограничений Cassowary, применяемый в ConstraintLayout. Он позволяет находить устойчивое решение без глубокой вложенности иерархии представлений, что положительно сказывается на производительности отрисовки [7].

Жадные алгоритмы и планирование фоновых задач.

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

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

Влияние выбора алгоритмической структуры на метрики мобильного приложения.

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

К таким метрикам относятся плавность интерфейса, время отклика на действия пользователя и уровень энергопотребления, определяющий автономность устройства.

В рамках проведённого анализа влияние различных структур данных и алгоритмических подходов было рассмотрено с позиции их практического применения в типичных сценариях мобильной разработки.

Использование массивов, обладающих высокой локальностью данных, на практике оказывается наиболее оправданным при работе с прокручиваемыми списками элементов пользовательского интерфейса, такими как RecyclerView в Android или UITableView в iOS. За счёт последовательного размещения элементов в памяти массивы эффективно взаимодействуют с кэш-памятью процессора, что позволяет минимизировать количество промахов кэша. Это напрямую отражается на визуальных характеристиках приложения: обеспечивается стабильная частота кадров и плавный скроллинг даже при работе с большими наборами данных. С точки зрения энергопотребления данный подход также является предпочтительным, поскольку процессор выполняет операции быстрее и с меньшим числом обращений к оперативной памяти.

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

Алгоритмы поиска также оказывают существенное влияние на характеристики мобильных приложений. В частности, применение бинарного поиска в сочетании с индексированными структурами хранения данных позволяет значительно сократить время выполнения операций поиска — с сотен миллисекунд до единиц миллисекунд. Для мобильных систем это особенно важно, поскольку быстрое завершение вычислений позволяет процессору перейти в энергоэффективное состояние, снижая общий расход энергии. Эффект особенно заметен при работе с локальными базами данных большого объёма.

Хеш-таблицы занимают ключевое место в реализации механизмов кэширования. Они широко используются для хранения изображений, сетевых ответов и других ресурсоёмких данных, повторный расчёт или загрузка которых является нежелательной. Средняя временная сложность операций доступа, близкая к O(1), обеспечивает практически мгновенное получение данных, что улучшает отзывчивость приложения.Кроме того, использование кэширования на основе хеш-таблиц позволяет избежать дорогостоящих операций, таких как повторные сетевые запросы или декодирование медиа-контента, что в совокупности снижает энергопотребление.

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

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

Выводы. Проведенный анализ показывает, что в современных мобильных реалиях алгоритмическая подготовка разработчиков выходит за рамки академической подготовки и становится практической необходимостью. Установлена четкая последовательность: от выбора типа коллекции в коде до физических процессов в полупроводниках процессора и, как следствие, до времени жизни устройства от одного заряда.Показано, как сложные алгоритмы (графовые, динамического программирования) интегрированы в современные фреймворки.

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

Научно-инженерный вклад: Данное исследование помогает навести мосты между фундаментальной теорией компьютерных наук (ComputerScience) и повседневной практикой мобильной разработки, обосновав, что в условиях мобильных систем алгоритмическая оптимизация — это, по сути, форма бережливого производства, где главным сберегаемым ресурсом является энергия аккумулятора. Работа показывает, что грамотный код может быть столь же эффективным для автономности смартфона, как и физическое увеличение емкости батареи.

Перспективы дальнейших исследований: Перспективным направлением является развитие инструментов статического анализа (линтеров), способных автоматически выявлять в коде потенциально неэффективные алгоритмические решения (например, использование `LinkedList` для скроллируемых списков) и предлагать оптимизированные альтернативы. Также видится крайне важным разработка математических моделей, которые позволят на этапе написания кода с высокой точностью прогнозировать энергетическую стоимость конкретного алгоритма в миллиампер-часах.

Список литературы

  1. Васильченко Н. Разные методы оптимизации энергопотребления в мобильной разработке // Яндекс Go (блог). — 2025.

  2. Пишем 3D-игру для ретро-устройств весом в 600Кб // Хабр. — 2025.

  3. Руководство по производительности Android // Документация для разработчиков Android. — URL: https://developer.android.com/topic/performance.

  4. Бхаргава А. Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих / пер. с англ. Е. Матвеева. — СПб.: Питер, 2017. — 288 с.

  5. Алгоритмы с нуля: учебное пособие. — СПб.: Питер, 2024. — 480 с.

  6. Структуры данных и алгоритмы в Java. Классика Computers Science / Р. Лафоре. — 2-е изд. — СПб.: Питер, 2023. — 704 с.

  7. Паттерны производительности для мобильных приложений // Тезисы докладов конференции Mobile Development Conference. — М., 2024.

  8. Анализ работы сборщика мусора в Android Runtime (ART) и его влияние на отзывчивость UI // Журнал «Программная инженерия». — 2023. — № 5. — С. 45-52.

Просмотров работы: 0