Как я могу лучше оптимизировать сеть на iOS?

Я создал проект на GitHub, чтобы узнать, как оптимизировать работу сети для моих приложений iOS. Я интенсивно использовал блоки и GCD, и после просмотра видео и видео WWDC 2012 прошлых лет я понял, что смогу сделать больше с NSOperationQueue. В частности, я могу контролировать количество одновременных операций (сетевых подключений), а также обеспечивать отмену операций. Я экспериментирую с разрешением 1, 2, 4, 8 и 16 одновременных операций, и я вижу интересные результаты, которые я не ожидал полностью. Я измеряю результаты, но мне интересно, есть ли еще что я должен измерять.

Вы можете найти образец проекта здесь:

https://github.com/brennanMKE/OptimizedNetworking

Поскольку я использую асинхронный API NSURLConnection, есть много преимуществ, когда у меня много одновременных подключений, потому что API тратит довольно много времени на ожидание HTTP-пакетов. Ранее мой код начинался с массива элементов для загрузки и запроса их всех последовательно, что исключает преимущества параллелизма. Я также использовал уведомления для отмены сетевых подключений. Теперь я могу сделать это с помощью этого проекта с помощью операций, и я настроил их на использование значения приоритета и категории, чтобы я мог расставлять приоритеты и сортировать загрузки и отменять категорию операций. Я могу выбрать использование категории для каждого представления, и когда пользователь покидает представление, все операции для этого представления будут отменены с использованием категории. Это освободит ресурсы для активного просмотра.

Одной из проблем, связанных с использованием более параллельных операций, является использование процессора, а также ввод-вывод, но я не знаю, как измерить эти значения с помощью iOS. Эквивалент слова "w" команда в iOS, чтобы показать использование процессора, может быть полезной. Меня меньше беспокоит вопрос ввода / вывода, но его измерение будет более полным.

Моя главная проблема с тем, как я работаю в сети, была отзывчивый пользовательский интерфейс. Я обнаружил, что то, что я делал, сделало пользовательский интерфейс вялым. Этот новый подход может сильно помочь, но только если я уменьшу количество одновременных операций. Оптимальное количество операций может варьироваться в зависимости от типа соединения (3G, WiFi и т. Д.), Поэтому проверка типа соединения может привести к некоторой оптимизации.

Если вы заинтересованы в более эффективных способах ускорения сетевых коммуникаций в своем приложении, попробуйте этот пример проекта и предложите другие способы измерения производительности и способы дальнейшей оптимизации связи. (Также обратите внимание, что я ссылаюсь на пример проекта Apple MVCNetworking, а также на проект ASIHTTPRequest.

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

Файл README должен помочь объяснить проект и как он работает.

Ответы на вопрос(1)

Ваш ответ на вопрос