优化 Gson 反序列化
优化反序列化的最佳方法是什么?
我目前正在使用标准的Gson.toJson和Gson.fromJson方法来对一些复杂的对象进行序列化和反序列化,如果可能的话,我希望减少反序列化时间。
我的对象中最复杂的包含43个变量,如果这很重要的话。
优化反序列化的最佳方法是什么?
我目前正在使用标准的Gson.toJson和Gson.fromJson方法来对一些复杂的对象进行序列化和反序列化,如果可能的话,我希望减少反序列化时间。
我的对象中最复杂的包含43个变量,如果这很重要的话。
如果你想使用Gson,而不是切换到另一个Java-to/from-JSON API,并且如果Gson的automagic数据绑定的性能不够好,那么有可能继续使用Gson API,并挤出一些适度更好的性能。
在 https://github.com/eishay/jvm-serializers/wiki 发布的最新几轮性能测试中,结果表明,通过使用Gson的流式API而不是数据绑定,Gson序列化和反序列化的组合性能可能会提高约25%。
请注意,这通常会使用户代码的实现显着复杂化,其中与使用数据绑定API的单行解决方案(例如,)相媲美,被替换为(容易)数十行,包括循环和条件。因此,提高性能的成本是更复杂的代码。new Gson().toJson(something)
有关使用流式处理 API 与数据绑定 API 的示例,请查看 jvm-serializers 项目中的 JsonGsonManual 和 JsonGsonDatabind
实现。
(注意:也可以在 Gson API 中使用树模型,而不是流式处理或数据绑定 API,但它似乎没有提供任何性能优于数据绑定的性能改进。有关示例,请参阅 JsonGsonTree
。