Я ищу советы для ускорения производительности сериализации, особенно при использовании 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;
}
IF Externalizable - это способ повысить производительность, есть ли какая-либо информация о том, как java вызывает методы в объектах, когда вы пытаетесь это записать? Я не уверен, что мне нужно реализовать его в родительском классе, а также о том, как я буду сериализовать вложенные объекты внутри каждого объекта.