优化Gson反序列化

2024-04-29

优化反序列化的最佳方法是什么?

我目前正在使用标准 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(使用前将#替换为@)

优化Gson反序列化 的相关文章

  • Google App Engine 数据存储写入:如何远程启用/禁用只读模式?

    在阅读备份时GAE 的数据存储 https developers google com appengine docs adminconsole datastoreadmin where 我们强烈建议您在备份或恢复期间将应用程序设置为只读模式
  • Java中如何合并两个数组?

    它不是连接而是合并两个数组 使它们成为名称值对的数组 firstarray a aa aaa secondarray b bb bbb result a b aa bb aaa bbb 最好的方法是什么 in Java public sta
  • Spring MVC - 自动查找验证器

    假设我有一个像这样的示例实体类 public class Address 和相应的验证器 Component public AddressValidator implements Validator Override public bool
  • 从 Eclipse 导出后,WAR 文件中缺少一些必要的库 - 为什么?

    我接手了一个大学的项目 其中包含一些 Web 服务 通过将项目导出为 WAR 文件 一些库包含在文件中 例如 Axis2 而另一些则不包含 hibernate JDBC 驱动程序 另外 添加到类路径中的 jar 尚未导出 所有库都位于硬盘驱
  • java中%%是什么意思?

    我是一名 PHP 程序员 想知道这行代码的含义 System out printf exp 3f is 3f n x Math exp x 3f 3f n 和逗号 x 是什么意思 它与C类似printf http java sun com
  • 我从 String placeName = placeText.getText().toString(); 收到空指针异常

    您好 想从编辑文本中获取地名并在地图上标记 这是我的代码 其中出现空指针异常 请帮助我应该做什么以及哪里出错了 因为我从对话框中的编辑文本字段获取地名 View layout View inflate this R layout alert
  • 使用 SSL 和代理设置的 Rest 客户端获取连接超时

    我正在使用带有忽略 ssl 的 Rest 客户端 它工作正常 但在将来我尝试使用客户端证书进行的生产中将无法工作 我有 ca 证书和客户端证书 我用它创建了一个客户端 但我收到错误 Exception in thread main com
  • Android Studio:如果设置项目的背景颜色,ListView OnClick 动画将不起作用

    在我的项目中 我在 ListView 内设置了项目 由插入 ConstraintLayout 中的多个元素组成 的背景颜色 但如果背景颜色不是至少一点透明 则单击和长按的默认动画会消失 事实上 随着透明度的降低 点击元素的效果越来越不明显
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • Java 套接字 - 读和写

    问题 客户端没有收到任何消息 这是客户端和服务器的完整代码 CLIENT public class Client extends Socket public Client String hostName int port throws Un
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 覆盖Java中的属性[重复]

    这个问题在这里已经有答案了 在 Java 中 我最近有几个项目 我使用了这样的设计模式 public abstract class A public abstract int getProperty public class B exten
  • 图标和导航视图之间的左边距

    我必须在图标和图标之间添加左边距NavigationView 如下图中箭头所示 我知道根据谷歌规范 这个边距必须有16dp但我需要改变它 我努力了
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • Spring Data MongoDB 和批量更新

    我正在使用 Spring Data MongoDB 并且想要执行批量更新 就像此处描述的那样 http docs mongodb org manual reference method Bulk find update Bulk find
  • Swing GUI 出现 IntelliJ 错误“contentPane 无法设置为 null。”从终端编译时

    当我从 IntelliJ 编译我的项目时 没有任何问题 我的程序运行顺利 但是当我尝试使用 javac 从终端编译它时 警告 注意 Victor presentation TableControllerMenu java 使用未经检查或不安
  • 如何在 tomcat 上部署 Java Web 应用程序 (.war)?

    我有一个 warJava Web 应用程序的文件 现在我想将它上传到我的 ftp 服务器 以便我可以执行它 我应该执行哪些步骤来运行它 webapp的上下文路径是 mywebapp Edit 实际上 我的 ftp 服务器名称是ftp bil

随机推荐

  • 删除一行中逗号之前的所有内容

    我有多个文件 其中包含以下行 foo 123456 bar 654321 baz 098765 我想删除每行逗号之前 包括 的所有内容 输出将是 123456 654321 098765 在另一个问题上看到类似的内容后 我尝试使用以下内容
  • Autofac:解决对命名实例的特定依赖关系

    使用 Autofac 我想注册一个组件并指定要解析为命名实例的特定依赖项 我使用构造函数注入找到了如下示例 这几乎就是我想要的 builder Register c gt new ObjectContainer ConnectionStri
  • Gradle:“克隆”原始 jar 任务,为包含依赖项的 jar 创建新任务

    我想在我的项目中创建一个新任务 该任务使用我的项目的类文件和依赖项的类文件 也称为 shaded jar 或 fat jar 创建一个 jar 存档 Gradle Cookbook 提出的解决方案修改了 JavaPlugin 的标准 jar
  • LINQ 表达式树 Any() 位于Where() 内

    我正在尝试生成以下 LINQ 查询 Query the database for all AdAccountAlerts that haven t had notifications sent out Then get the entity
  • App Engine、PIL 和叠加文本

    我正在尝试在 GAE 上的图像上覆盖一些文本 现在他们公开了 PIL 库 这应该不是问题 这就是我所拥有的 它有效 但我不禁认为我应该直接写入背景图像 而不是创建单独的覆盖图像然后合并 我可以用吗Image frombuffer http
  • mcrypt_crypt 的替代方案?

    根据 php 7 0 mcrypt decrypt 已被弃用 我有以下代码 intSize mcrypt get iv size MCRYPT RIJNDAEL 256 MCRYPT MODE ECB strSize mcrypt crea
  • Swift 中的 StrongLoop 环回示例

    我正在尝试在 Swift 中实现示例 LoopBack iOS 应用程序 创建 LoopBack iOS 应用程序 第 1 部分 http docs strongloop com display DOC Creating a LoopBac
  • MYSQL枚举:@rownum,奇偶记录

    我问了一个关于为查询结果创建临时 虚拟 ID 的问题 mysql 和 php 查询结果的临时 虚拟 ID https stackoverflow com questions 4063998 mysql php temporary virtu
  • 使用“容器ip”连接到docker容器

    我在 mac 上运行 docker 我想使用 docker 容器的 ip 不是虚拟机的 ip 连接到它 原因是 Spark 驱动程序将自身注册到容器 IP 172 17 0 2 并且从 mac 运行的客户端尝试连接到该地址 有没有办法从 m
  • HTML 列表元素:将父级宽度分成相等的部分

    我有一个父母 ol 和几个 li 中的项目 ol style display block li style display block Item 1 li li style display block Item 2 li li style
  • 使用 NaN 获取 pandas 系列模式的最快方法

    我需要找到 pandas groupby 对象或单个系列的模式 最常见元素 为此我有以下函数 def get most common srs from collections import Counter import numpy as n
  • 如何在 R 中按组对列进行排序

    我有一个 data frame 比如 df 如下所示 Hospital Name State Mortality Rate hospital 1 AA 0 2 hospital 2 AA 0 3 hospital 3 BB 0 3 hosp
  • 获取完整的 url,包括哈希后的查询字符串

    如何获得完整URL包括后面的字符串参数hash tag 我试着回应 url SERVER REQUEST URI echo url 之后的字符串hash tag不会读 佩卡的评论应该是一个答案 hash标签后面的字符串参数不发送到服务器 它
  • “以下对象被‘package:xxx’屏蔽”是什么意思?

    当我加载包时 我收到一条消息 The following object is masked from package xxx 例如 如果我加载testthat http www rdocumentation org packages tes
  • Haskell 长度函数实现

    我正在学习 Haskell 编程 我试图理解列表是如何工作的 因此我尝试编写两个可能的length功能 myLength a gt Integer myLength foldr x gt 1 0 myLength1 a gt Integer
  • 如何将 Angular2 用作非 SPA?

    我刚刚开始使用 Angular2 发现网上可以找到的所有教程都只解释了如何为单页应用程序 SPA 设置 Angular2 然而 对于我网站的主页 我仍然想使用 PHP 并且只在登录 注册 联系等几个地方使用 Angular2 如何初始化联系
  • 字典条目被覆盖? [复制]

    这个问题在这里已经有答案了 我发现一些输入没有存储在 Python 3 的字典中 运行这段代码 N int input How many lines of subsequent input graph for n in range N st
  • 如何在 if () 语句中声明变量? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 的条件或控制语句中声明和初始化变量 https stackoverflow com questions 1516919 declaring and initializing a variabl
  • CoreBluetooth XPC 连接无效

    public class BLE NSObject CBCentralManagerDelegate var centralManager CBCentralManager public override init super init s
  • 优化Gson反序列化

    优化反序列化的最佳方法是什么 我目前正在使用标准 Gson toJson 和 Gson fromJson 方法来序列化和反序列化一些复杂对象 我希望尽可能减少反序列化时间 如果重要的话 我的最复杂的对象包含 43 个变量 如果你想使用 Gs