Сохранение Java-объектов - PullRequest
       8

Сохранение Java-объектов

0 голосов
/ 22 сентября 2018

Я пытаюсь сохранить довольно большие классы.

Примечание:

Я сохраняю и загружаю, используя Java ObjectOutputStream и ObjectInputStream, где в методе 1 Integer [] - сохраняемый объекти в методе два буфера OutputStream / s (byte []) сохраняются.

Что я хочу больше всего:

  • быстрое сохранение и загрузка во время выполнения
  • легко понять другим
  • легко редактировать после добавления или удаления из класса

Каков наилучший способ сохранения классов типов Java из двух следующих:

Метод 1: (IoStreamSerializaion - это интерфейс с двумя используемыми ниже методами)

public final class Item implements IoStreamSerialization {

    private int id;

    private int amount;


    public Item(int id, int amount) {
        super();
        this.id = id;
        this.amount = amount;
    }

    @Override 
    public void loadInputStream(InputStream is) {
        id = is.readUnsignedByte();
        amount = is.readInt();
    }

    @Override 
    public OutputStream saveOutputStream() {
        OutputStream os = new OutputStream(2);
        os.writeByte(id);
        os.writeInt(amount);
        return os;
    }

}

Метод 2: (IoBinary - это интерфейс с двумя используемыми методами ниже, гдеуниверсальный тип arg - это то, что нужно сохранить)

public final class Item implements IoBinary<Integer[]> {

    private int id;

    private int amount;


    public Item(int id, int amount) {
        super();
        this.id = id;
        this.amount = amount;
    }

    @Override 
    public void loadBinary(Integer[] binary) {
        id = binary[0];
        amount = binary[1];
    }

    @Override 
    public Integer[] saveBinary() {
        return new Integer[] { id, amount };
    }

}

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Когда дело доходит до исполнения: «НЕ Угадай, измеряй!»

Однако сначала запустите его.Если это достаточно быстро, остановитесь на этом.Если не в профиле, найдите узкое место.

Что вам нужно больше всего:

  1. Код, который работает правильно (т.е. проверен)
  2. легко понять другим
  3. легко редактировать после добавления или удаления из класса
  4. ....
  5. ....
  6. быстрое сохранение и загрузка во время выполнения

Точки 2. и 3. связаны с ремонтопригодностью важнее скорости.Зачем?Если у вас есть код, работающий правильно, и его легко поддерживать и изменять, его также можно будет изменить, чтобы он быстрее выполнялся после обнаружения узкого места.

С другой стороны, если у вас есть быстрый код, который трудно понятьи изменить его скоро начнет гнить и гноиться.

0 голосов
/ 22 сентября 2018

Внедрение с использованием сериализации (решение 1) - лучший и оптимальный способ для больших классов с точки зрения ускорения процесса и поиска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...