我的Android应用程序使用文件中的ObjectOutputStream存储数据。我们有意识地决定不使用数据库。我最近读到,Android上的序列化被认为非常慢。此外,使用Jackson + JSON的速度很快。 然而,在合并Jackson / JSON之后,似乎将POJO存储在具有Jackson / JSON的文件中并不是更快,有时甚至比序列化更慢。我正在使用Jackson v2.2的核心库
我也尝试过使用ObjectWriters
和ObjectReaders
,但这并没有带来任何显着的速度优势。
我正在使用ObjectMapper
的以下设置(我在全局创建一个):
mapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);
mapper.setVisibility(JsonMethod.GETTER, Visibility.NONE);
mapper.setVisibility(JsonMethod.SETTER, Visibility.NONE);
mapper.setVisibility(JsonMethod.IS_GETTER, Visibility.NONE);
mapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS, false);
mapper.configure(DeserializationConfig.Feature.USE_ANNOTATIONS, false);
当我说没有速度优势时,我正在考虑约400个POJO并将它们存储在单独的文件中。我目前正在计时Serializtion和写入文件,而不是相反。这些POJO中有一半相当复杂(参考其他POJO列表)。我正在测试设备(运行Android 4.1的Galaxy Tab 10-1)。使用序列化和杰克逊/ JSON这个过程大约需要6秒,两种方法之间的差异在误差范围内(重复测试运行的变化)。
关于Android上“非常慢的序列化”可能与“非常快”的Jackson / JSON大致相同的任何建议?是否有一些方法可以大大加快杰克逊的速度?