JAVA对象转json字符串性能优化

JAVA对象转json字符串性能优化最近对自己写的 elasticsearc 客户端框架在进行性能优化 数据插入部分使用的是 JAVABean 对象方式传参 框架内部使用了 fastjson 进行对象转 json 字符串的操作 尝试着使用不同方式进行对象转 json 字符串操作 找到了一种性能更好的方式 具体请看下面代码段 packagetest importcom alibaba fastjson JSON importcom alibaba fastjson JSONObject importcom google common

    最近对自己写的elasticsearch客户端框架在进行性能优化,数据插入部分使用的是JAVABean对象方式传参,框架内部使用了fastjson进行对象转json字符串的操作,尝试着使用不同方式进行对象转json字符串操作。找到了一种性能更好的方式,具体请看下面代码段:

package test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import java.lang.reflect.Field; import java.util.List; / * Created by memory_fu on 2021/1/7. */ public class ReflectasmTest { public static void main(String[] args) throws IllegalAccessException { Person person = new Person(); person.setAge(10); person.setId("1"); person.setName("傅浩"); person.setHobby("ball"); int sumCount = ;// 循环次数 long l1 = System.currentTimeMillis(); for (int i = 0; i < sumCount; i++) { testFastJSON(person); } System.out.println("fastjson方式转换=====: " + (System.currentTimeMillis() - l1) + " ms."); long l2 = System.currentTimeMillis(); for (int i = 0; i < sumCount; i++) { testReflection(person); } System.out.println("JAVA反射方式转换=====: " + (System.currentTimeMillis() - l2) + " ms."); } / * 方式一: * fastjson 对象转为JSON字符串 */ public static 
  
    void testFastJSON(T vo) throws IllegalAccessException { String string = JSON.toJSONString(vo); JSONObject jsonObject = JSON.parseObject(string); String str = jsonObject.toJSONString(); // System.out.println(str); } public static List 
   
     fields = null; / * 反射方式拿到类的field集合 */ public static 
    
      List 
     
       init(T vo) { Class 
       aClass = vo.getClass(); fields = Lists.newArrayList(); for (Class i = aClass; i != Object.class; i = i.getSuperclass()) { Field[] declaredFields = i.getDeclaredFields(); for (Field field : declaredFields) { fields.add(field); } } return fields; } / * 方式二: * 反射方式 对象转为JSON字符串 */ public static 
      
        void testReflection(T vo) throws IllegalAccessException { if (fields == null) { init(vo); } JSONObject jsonObject = new JSONObject(); for (Field field : fields) { jsonObject.put(field.getName(), field.get(vo)); } String str = jsonObject.toJSONString(); // System.out.println(str); } } 
       
      
     
    
  

 

基于2000万数据进行测试结果:

可以明显看出使用JAVA反射方式性能比使用fastjson要高,具体原因是因为fastjson转换内部有很多数据格式校验,而我们使用反射方式没有这些校验,所以性能提升明显。

 

结论: 对于业务开发过程中,要进行性能优化并且对数据内容格式已知情况下,可使用 方式二 进行定制性优化。

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225868.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:22
下一篇 2026年3月17日 上午8:22


相关推荐

  • 倒立摆仿真_基于matlab单摆运动仿真模拟

    倒立摆仿真_基于matlab单摆运动仿真模拟本博文主要学习目的为倒立摆PID控制入门,面向matlab小白,所以挑选最简单的模型和例子写了一篇文章模型已经上传到网上,附上文件链接https://github.com/Yanchuan913/-/blob/main/Inverted_Pendulum_P.slx效果展示倒立摆PID控制matlabsimulink仿真,最简单版本效果展示,内模型的框图总框架包括物理模型部分、控制器部分、环境部分(环境部分都是这么设置的,就不多说)物理模型首先来看物理.

    2022年8月18日
    18
  • vscode自动快捷格式化代码_vscode格式化代码快捷键_解锁格式化的快捷键

    vscode自动快捷格式化代码_vscode格式化代码快捷键_解锁格式化的快捷键vscode 格式化代码的快捷键如下 来源于这里 OnWindowsShi Alt FOnMacShift Option FOnUbuntuVSC 的常用快捷键和插件一 vscode 的常用快捷键 1 注释 a 单行 4 Beautiful 格式化代码的工具 VSCode 可以通过以下快捷键格式化代码 windows Shift Alt FMac Shift O

    2026年3月17日
    2
  • 学习笔记:02_Git入门

    学习笔记:02_Git入门

    2021年7月11日
    63
  • 使用idea将springboot打包成jar包

    使用idea将springboot打包成jar包1 File gt ProjectStruc ProjectSetti gt Artifacts gt 点击 号 gt JAR gt Frommodulesw 点击文件图标 gt 选择入口类 gt OK gt OK4 idea 右侧点击 maven gt 点击 Lifecycle 下的 clean gt 点击 package

    2026年3月26日
    2
  • linux 解压缩rar文件「建议收藏」

    linux 解压缩rar文件「建议收藏」在Linux下面unrar解压缩一个大的rar文件,提示以下错误:/lib/libc.so.6:version`GLIBC_2.7’notfound(requiredbyunrar)解决方法:1,下载免安装的unrar版本2,使用绝对路径执行unrar命令/root/rar/unrarx/home/oracle/file.rar /home/oracl

    2022年7月27日
    6
  • pycharm能不能编写Java_使用Pycharm编写第一个Python程序

    pycharm能不能编写Java_使用Pycharm编写第一个Python程序使用 Pycharm 编写第一个 1 打开 Pycharm 选择 CreateNewPro 创建一个新项目 2 选择 Location 表示该项目保存的路径 Interpreter 表示使用的 Python 解释器版本 最后点击 Create 创建项目 1 右击项目 选择 New 再选择 PythonFile2 在弹出的对话框中输入的文件名 HelloPython 点击 OK 表示创建一个 Python 程序的文

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号