В Android вы можете использовать TensorFlow Lite , облегченное решение для TensorFlow.
Вы можете найти полное руководство здесь .
Вы смотрели на буферы протокола Google? Походит на вариант использования для него.
Я не знаю, почему Сериализация Java была провалена, это - совершенно жизнеспособный механизм.
Это не ясно из исходного сообщения, но является всем 2G данных в "куче" одновременно? Или Вы выводите что-то еще?
Из поля Сериализация не является "идеальным" решением, но если Вы реализуете Externalizable на своих объектах, Сериализация может работать просто великолепно. Большой расход сериализации выясняет, что записать и как записать это. Путем реализации Externalizable Вы вынимаете те решения из его рук, таким образом получая настоящее повышение производительности и пространство сбережения.
В то время как ввод-вывод является основной стоимостью записи больших объемов данных, несущественные затраты на преобразование данных могут также быть очень дорогими. Например, Вы не хотите преобразовывать все свои числа, чтобы написать сообщение и затем обратно снова, лучше сохранить их в более собственном формате, если это возможно. ObjectStream имеет методы к чтению-записи собственные типы в Java.
Если все Ваши данные разработаны, чтобы быть загруженными в в единственную структуру, Вы могли просто сделать ObjectOutputStream.writeObject(yourBigDatastructure) после реализации Externalizable.
Однако Вы могли также выполнить итерации по своей структуре и назвать writeObject на отдельных объектах.
Так или иначе Вы испытываете необходимость в некоторой "objectToFile" стандартной программе, возможно, несколько. И это эффективно, что Externalizable обеспечивает, а также платформа для обхода структуры.
Другой проблемой, конечно, является управление версиями и т.д. Но так как Вы реализуете все стандартные программы сериализации сами, Вы имеете полный контроль над этим также.
Самый простой подход, происходящий сразу по моему мнению, использует буфер с отображенной памятью NIO (java.nio. MappedByteBuffer). Используйте единственный буфер (приблизительно) соответствующий размеру одного объекта, и сбросьте/добавьте их к выходному файлу при необходимости. Буферы с отображенной памятью очень эффективны.
Вы попробовали сериализацию Java? Вы записали бы им использование ObjectOutputStream и считали бы их назад в использовании ObjectInputStream. Конечно, классы должны были бы быть Serializable
. Это было бы низкое решение для усилия и, потому что объекты хранятся в двоичном файле, это было бы компактно и быстро.
Если производительность очень импортирует затем, Вы должны записать это сам. Необходимо использовать компактный двоичный формат. Поскольку с 2 ГБ диск операция ввода-вывода очень важны. При использовании какого-либо человекочитаемого формата как XML или другие сценарии, Вы изменяете размер данных с фактором 2 или больше.
В зависимости от данных это может быть, убыстряются, если Вы сжимаете данные на лету с низким уровнем сжатия.
Общее количество никакие, движение является сериализацией Java, потому что при чтении Java проверяют каждый объект, если это - ссылка на существующий объект.
буферы протокола: имеет смысл. вот выборка от их Wiki: http://code.google.com/apis/protocolbuffers/docs/javatutorial.html
Получение большей скорости
По умолчанию буферный компилятор протокола пытается генерировать меньшие файлы при помощи отражения для реализации большей части функциональности (например, парсинг и сериализация). Однако компилятор может также сгенерировать код, оптимизированный явно для Ваших типов сообщений, часто обеспечивая повышение производительности порядка величины, но также и удвоив размер кода. При профилировании шоу, что приложение проводит много времени в буферной библиотеке протокола, необходимо попытаться изменить режим оптимизации. Просто добавьте следующую строку к своему .proto файлу:
опция optimize_for = СКОРОСТЬ;
Повторно выполните компилятор протокола, и он генерирует чрезвычайно быстро парсинг, сериализацию и другой код.
Необходимо, вероятно, рассмотреть решение для базы данных - все базы данных делают, оптимизируют их информацию, и если Вы используете, в спящем режиме, Вы сохраняете свою объектную модель, как, и действительно даже не думайте о своем DB (я верю вот почему, что это называют, в спящем режиме, просто хранят Ваши данные прочь, затем возвращают его),