У меня есть вопрос, и я очень открыт для предложений (даже очень странных!)
Я пишу приложение для iPhone, которое делает запрос (URL с параметрами) на сервер. В ответ iPhone получает XML. Все хорошо.
Сейчас я стремлюсь улучшить скорость своего приложения, измеряя время, необходимое для выполнения определенных задач. Я обнаружил, что из всех выполненных задач (загрузка, синтаксический анализ XML, отправка запроса, обработка запроса, анализ объектов из XML) загрузка фактического XML занимает больше всего времени.
Теперь мои XML-файлы очень, очень, очень простые и очень, очень, очень маленькие. Я использую их в основном для чтения RSS-подобных данных и отображения их в UITableView.
Мое приложение работает очень хорошо, и нет ничего, что кажется действительно медленным, но сейчас в App Store есть одно приложение, которое делает что-то очень похожее на мое приложение, но работает намного быстрее и чувствует себя более «быстро», если если вы понимаете, о чем я. Он также имеет отличную возможность загружать заголовки по одному из RSS-ленты.
В настоящее время я экспериментирую со сжатием моих данных с помощью gzip, но сжатие только делает мои данные вдвое меньшими, и, похоже, это не очень хорошо сказывается на производительности. Главное, чтобы данные были загружены до того, как они будут проанализированы. Было бы очень здорово иметь «поток» данных, который анализируется по мере поступления. Таким образом, я могу выполнять две работы почти одновременно и загружать заголовки по очереди (делая интерактивность пользователей более привлекательной).
У кого-нибудь есть идеи, как улучшить мою производительность? Либо с помощью великолепных советов по сжатию, либо с помощью совершенно других способов связи с сервером. Все приветствуется!
ОБНОВЛЕНИЕ: отложив время ожидания и скорость отклика сервера; как я могу получить источник XML для потоковой передачи на мой iPhone (загруженный байт за байт) и в то же время быть проанализированным? Прямо сейчас это линейный процесс загрузки -> разбора -> показа, но он может стать полупараллельным при одновременной загрузке и разборе (и показывать каждый элемент после завершения загрузки, вместо того, чтобы загружать все одновременно). время в UITableView)