Я использую Simple XML library для обработки XML файлов в приложении для Android. Этот файл может стать довольно большим - около 1 Мб, и его можно вложить довольно глубоко, поэтому они довольно сложны.
Когда приложение загружает один из этих файлов, через Simple API, он может занять до 30 секунд. В настоящее время я передаю FileInputStream в метод [read (Class, InputStream)] [2] класса Simple Persister. Фактически он просто считывает узлы XML и сопоставляет данные экземплярам объектов модели, реплицируя структуру дерева XML в памяти.
Мой вопрос: как повысить производительность Android? Моя нынешняя мысль состояла в том, чтобы прочитать содержимое файла в массив байтов и передать ByteArrayInputStream вместо метода чтения Persister. Я предполагаю, что время обработки файла будет быстрее, но я не уверен, будет ли время, с которым было сохранено время, будет противодействовать времени, затраченному на то, чтобы сначала прочитать весь файл. Также могут возникнуть проблемы с памятью.
Это безумное поручение? Есть ли что-нибудь еще, что я мог бы сделать, чтобы повысить производительность в этой ситуации? Если нет, мне просто нужно прибегнуть к улучшению обратной связи с пользователем о ходе загрузки файла.
Некоторые оговорки:
1) Я не могу изменить библиотеку XML, которую я использую, - этот код является частью "движка", который используется в настольных, мобильных и веб-приложениях. Накладные расходы, чтобы изменить это, были бы слишком большими для времени.
2) Файлы данных создаются пользователями, поэтому я не контролирую размер/глубину вложенности в них.