Я ищу совет, чтобы ускорить производительность сериализации, особенно при использовании Google Android. Для проекта, над которым я работаю, я пытаюсь передать пару сотен объектов с сервера в приложение Android и прохожу различные этапы, чтобы получить необходимую мне производительность.
Сначала я попробовал ужасный парсер XML, который я взломал вместе, используя Scanner специально для этого проекта, и это привело к невероятно низкой производительности при загрузке объектов (~ 5 минут для файла размером 300 КБ). Затем я отошел от этого и сделал мои классы реализующими Serializable и записал ArrayList объектов, которые у меня были, в файл. Чтение этого файла в объекты, которые уже были загружены Android, заняло ~ 15-30 секунд для сериализованного файла ~ 100 КБ. Я все еще нахожу это совершенно неприемлемым для приложения Android, так как мое приложение требует загрузки данных при запуске приложения.
Я кратко прочитал о Externalizable и о том, как он может повысить производительность, но я не уверен, как реализовать его с помощью вложенных классов. Сейчас я пытаюсь сохранить ArrayList следующего класса с вложенными классами под ним.
public class MealMenu implements Serializable{
private String commonsName;
private long startMillis, endMillis, modMillis;
private ArrayList<Venue> venues;
private String mealName;
}
И место проведения класса:
public class Venue implements Serializable{
private String name;
private ArrayList<FoodItem> foodItems;
}
И класс FoodItem:
public class FoodItem implements Serializable{
private String name;
private boolean vegan;
private boolean vegetarian;
}
ЕСЛИ Externalizable - это способ повысить производительность, есть ли какая-либо информация о том, как java вызывает методы в объектах, когда вы пытаетесь его записать? Я не уверен, нужно ли мне реализовывать это в родительском классе или как я буду сериализовать вложенные объекты в каждом объекте.