优化反序列化的最佳方法是什么?
我目前正在使用标准 Gson.toJson 和 Gson.fromJson 方法来序列化和反序列化一些复杂对象,我希望尽可能减少反序列化时间。
如果重要的话,我的最复杂的对象包含 43 个变量。
如果你想使用 Gson,而不是切换到另一个 Java-to/from-JSON API,并且如果 Gson 的自动数据绑定的性能不够好,那么可以继续使用 Gson API,并挤出一些性能稍好一些。
在发布的最新几轮性能测试中https://github.com/eishay/jvm-serializers/wiki https://github.com/eishay/jvm-serializers/wiki,结果表明,通过使用 Gson 序列化和反序列化的综合性能可能会提高约 25%Gson的流媒体API https://sites.google.com/site/gson/streaming而不是数据绑定。
请注意,这通常会使用户代码的实现变得非常复杂,其中的解决方案与使用数据绑定 API 的单行代码相当,例如,new Gson().toJson(something)
,(很容易)被几十行替换,包括循环和条件。因此,提高性能的代价是代码变得更加复杂。
有关使用流 API 与数据绑定 API 的示例,请查看JsonGsonManual https://github.com/eishay/jvm-serializers/blob/master/tpc/src/serializers/json/JsonGsonManual.java and JsonGsonDatabind https://github.com/eishay/jvm-serializers/blob/master/tpc/src/serializers/json/JsonGsonDatabind.java实施,在jvm 序列化器项目 https://github.com/eishay/jvm-serializers.
(注意:还可以在 Gson API 中使用树模型,而不是流式处理或数据绑定 API,但它似乎没有提供任何比数据绑定更好的性能改进。有关示例,请参阅JsonGsonTree https://github.com/eishay/jvm-serializers/blob/master/tpc/src/serializers/json/JsonGsonTree.java.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)