Я ищу совет ускорить выполнение сериализации, конкретно при использовании Google Android. Для проекта я продолжаю работать, я пытаюсь передать пару сотни объектов от сервера до приложения для Android и прохожу различные этапы для получения производительности, в которой я нуждаюсь.
Сначала я попробовал ужасный синтаксический анализатор XML, что я взломал вместе Сканер использования специально для этого проекта, и это вызвало невероятно медленную производительность при загрузке объектов (~5 минут для файла 300 КБ). Я затем переехал от этого и заставил свои классы реализовать сериализуемый и записал ArrayList объектов, которые я имел в файл. Чтение того файла в объекты, Android, с файлом, уже загруженным, обратите внимание, занимал ~15-30 секунд для ~100KB, сериализировало файл. Я все еще нахожу это абсолютно недопустимым для приложения для 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 называет методы в объектах, когда Вы пытаетесь выписать его? Я не уверен, должен ли я реализовать его в родительском классе, ни как я пошел бы о сериализации вложенных объектов в каждом объекте.
Никогда не используйте Serializable
в разных архитектурах. У вас нет возможности узнать, будет ли виртуальная машина Dalvik иметь совместимую сериализацию с версией Java вашего сервера. Даже если он работает сегодня, он может не иметь обновлений с обеих сторон. Всегда выбирайте то, что разработано специально для работы с разными архитектурами.
Параметры включают:
Кроме того, загрузка 300 КБ данных при запуске приложения является рецептом для неприятностей. Пожалуйста, подумайте об использовании SQLite, чтобы вы могли одновременно работать только с теми битами данных, которые вам нужны.