IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 主流Json引擎的性能比较 -> 正文阅读

[开发测试]主流Json引擎的性能比较

GSON,FASTJSON,JACKSON的性能比较

测试目的

测试目前用过的三款主流Json引擎的序列化和反序列化性能

序列化:object -> Json

反序列化:Json -> object

测试环境

  • 硬件配置:自己的笔记本电脑,配置如下所示

    image-20211224004410857

  • 软件版本:如下所示

    <!--fastjson-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.76</version>
            </dependency>
            <!--jack-json-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.5</version>
            </dependency>
            <!--gson-->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.9</version>
            </dependency>
    

正式测试

测试了序列化和反序列化的时间对比,所用代码如下

序列化测试对比

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class SerializationTest {

    /**
     * 测试fastjson gson jackson序列化性能
     */
    @Test
    public void test1() throws JsonProcessingException, InterruptedException {
        int[] numbers = new int[]{1, 10, 50, 100, 1000, 10000, 100000, 1000000, 10000000};
        for (int number : numbers) {
            System.out.println("本次测试对象个数:" + number);
            List<User> users = new ArrayList<>();
            for (int j = 0; j < number; j++) {
                User user = new User();
                user.setId(j);
                user.setUsername("张三" + j);
                user.setBirthday(new Date());
                users.add(user);
            }

            SystemMonitor.init();
            TimeUnit.SECONDS.sleep(1);

            //测试gson用时
            System.out.println("使用gson序列化开始");
            Gson gson = new Gson();
            long start = new Date().getTime();
            gson.toJson(users);
            long end = new Date().getTime();
            SystemMonitor.init();
            TimeUnit.SECONDS.sleep(1);
            System.out.println("gson转换共用时:" + (end - start) + "ms");

            //测试fastjson用时
            System.out.println("使用fastjson序列化开始");
            long start1 = new Date().getTime();
            JSON.toJSONString(users);
            long end1 = new Date().getTime();
            SystemMonitor.init();
            TimeUnit.SECONDS.sleep(1);
            System.out.println("fastjson转换共用时:" + (end1 - start1) + "ms");

            //测试jackson用时
            System.out.println("使用jackson序列化开始");
            long start2 = new Date().getTime();
            ObjectMapper mapper = new ObjectMapper();
            mapper.writeValueAsString(users);
            long end2 = new Date().getTime();
            SystemMonitor.init();
            TimeUnit.SECONDS.sleep(1);
            System.out.println("jackson转换共用时:" + (end2 - start2) + "ms\n");
        }
    }

}

测试结果如下:

本次测试对象个数:1
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4M
总的物理内存:31.86G
剩余的物理内存:15.36G
已使用的物理内存:16.5G
总线程数:9
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):12M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:10
===========================
gson转换共用时:21ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):16M
总的物理内存:31.86G
剩余的物理内存:15.28G
已使用的物理内存:16.58G
总线程数:11
===========================
fastjson转换共用时:122ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):7.4M
总的物理内存:31.86G
剩余的物理内存:15.27G
已使用的物理内存:16.59G
总线程数:12
===========================
jackson转换共用时:232ms

本次测试对象个数:10
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.26G
已使用的物理内存:16.6G
总线程数:13
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.29G
已使用的物理内存:16.57G
总线程数:14
===========================
gson转换共用时:2ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.29G
已使用的物理内存:16.57G
总线程数:15
===========================
fastjson转换共用时:0ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.29G
已使用的物理内存:16.57G
总线程数:16
===========================
jackson转换共用时:2ms

本次测试对象个数:50
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.29G
已使用的物理内存:16.57G
总线程数:17
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.29G
已使用的物理内存:16.57G
总线程数:18
===========================
gson转换共用时:8ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:19
===========================
fastjson转换共用时:1ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:20
===========================
jackson转换共用时:4ms

本次测试对象个数:100
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:21
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:22
===========================
gson转换共用时:9ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:23
===========================
fastjson转换共用时:1ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:24
===========================
jackson转换共用时:3ms

本次测试对象个数:1000
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:25
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):11.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:26
===========================
gson转换共用时:25ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):15.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:27
===========================
fastjson转换共用时:10ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):15.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:28
===========================
jackson转换共用时:8ms

本次测试对象个数:10000
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):15.4M
总的物理内存:31.86G
剩余的物理内存:15.3G
已使用的物理内存:16.56G
总线程数:29
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):9.1M
总的物理内存:31.86G
剩余的物理内存:15.27G
已使用的物理内存:16.59G
总线程数:30
===========================
gson转换共用时:88ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):13.1M
总的物理内存:31.86G
剩余的物理内存:15.27G
已使用的物理内存:16.59G
总线程数:31
===========================
fastjson转换共用时:23ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):17.1M
总的物理内存:31.86G
剩余的物理内存:15.26G
已使用的物理内存:16.6G
总线程数:32
===========================
jackson转换共用时:14ms

本次测试对象个数:100000
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):29.1M
总的物理内存:31.86G
剩余的物理内存:15.26G
已使用的物理内存:16.59G
总线程数:33
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):221.1M
总的物理内存:31.86G
剩余的物理内存:15.11G
已使用的物理内存:16.75G
总线程数:34
===========================
gson转换共用时:443ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):301.1M
总的物理内存:31.86G
剩余的物理内存:15.04G
已使用的物理内存:16.82G
总线程数:35
===========================
fastjson转换共用时:142ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):71.6M
总的物理内存:31.86G
剩余的物理内存:15.01G
已使用的物理内存:16.84G
总线程数:36
===========================
jackson转换共用时:86ms

本次测试对象个数:1000000
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):195.6M
总的物理内存:31.86G
剩余的物理内存:15.01G
已使用的物理内存:16.85G
总线程数:37
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):442.9M
总的物理内存:31.86G
剩余的物理内存:14.41G
已使用的物理内存:17.45G
总线程数:38
===========================
gson转换共用时:3392ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):680.2M
总的物理内存:31.86G
剩余的物理内存:14.53G
已使用的物理内存:17.33G
总线程数:39
===========================
fastjson转换共用时:922ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):733.4M
总的物理内存:31.86G
剩余的物理内存:14.37G
已使用的物理内存:17.49G
总线程数:40
===========================
jackson转换共用时:430ms

本次测试对象个数:10000000
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):1645.9M
总的物理内存:31.86G
剩余的物理内存:13.39G
已使用的物理内存:18.47G
总线程数:41
===========================
使用gson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):2628M
总的物理内存:31.86G
剩余的物理内存:10.57G
已使用的物理内存:21.29G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3052M
总的物理内存:31.86G
剩余的物理内存:10.44G
已使用的物理内存:21.42G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3436M
总的物理内存:31.86G
剩余的物理内存:10.07G
已使用的物理内存:21.79G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3852M
总的物理内存:31.86G
剩余的物理内存:9.66G
已使用的物理内存:22.2G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4236M
总的物理内存:31.86G
剩余的物理内存:9.52G
已使用的物理内存:22.33G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4644M
总的物理内存:31.86G
剩余的物理内存:9.49G
已使用的物理内存:22.37G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4444M
总的物理内存:31.86G
剩余的物理内存:9.47G
已使用的物理内存:22.39G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4760M
总的物理内存:31.86G
剩余的物理内存:9.3G
已使用的物理内存:22.56G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5212M
总的物理内存:31.86G
剩余的物理内存:9.3G
已使用的物理内存:22.56G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5640M
总的物理内存:31.86G
剩余的物理内存:9.29G
已使用的物理内存:22.57G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3348M
总的物理内存:31.86G
剩余的物理内存:9.28G
已使用的物理内存:22.58G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3792M
总的物理内存:31.86G
剩余的物理内存:9.28G
已使用的物理内存:22.58G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5460M
总的物理内存:31.86G
剩余的物理内存:8.98G
已使用的物理内存:22.88G
总线程数:41
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5464M
总的物理内存:31.86G
剩余的物理内存:7.89G
已使用的物理内存:23.97G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5464M
总的物理内存:31.86G
剩余的物理内存:8G
已使用的物理内存:23.86G
总线程数:42
===========================
gson转换共用时:32537ms
使用fastjson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4915.2M
总的物理内存:31.86G
剩余的物理内存:7.94G
已使用的物理内存:23.92G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3559.2M
总的物理内存:31.86G
剩余的物理内存:7.82G
已使用的物理内存:24.04G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):2072.9M
总的物理内存:31.86G
剩余的物理内存:7.73G
已使用的物理内存:24.13G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):2704.9M
总的物理内存:31.86G
剩余的物理内存:7.72G
已使用的物理内存:24.14G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3556.9M
总的物理内存:31.86G
剩余的物理内存:7.66G
已使用的物理内存:24.2G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3756.9M
总的物理内存:31.86G
剩余的物理内存:7.59G
已使用的物理内存:24.27G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3881.4M
总的物理内存:31.86G
剩余的物理内存:7.49G
已使用的物理内存:24.37G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3969.4M
总的物理内存:31.86G
剩余的物理内存:7.49G
已使用的物理内存:24.37G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4113.4M
总的物理内存:31.86G
剩余的物理内存:7.48G
已使用的物理内存:24.38G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5792M
总的物理内存:31.86G
剩余的物理内存:7.47G
已使用的物理内存:24.39G
总线程数:42
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5792M
总的物理内存:31.86G
剩余的物理内存:7.47G
已使用的物理内存:24.39G
总线程数:43
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5796M
总的物理内存:31.86G
剩余的物理内存:7.47G
已使用的物理内存:24.39G
总线程数:43
===========================
fastjson转换共用时:9760ms
使用jackson序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):2510.5M
总的物理内存:31.86G
剩余的物理内存:7.45G
已使用的物理内存:24.41G
总线程数:43
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):3043.5M
总的物理内存:31.86G
剩余的物理内存:7.42G
已使用的物理内存:24.44G
总线程数:43
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):5322.5M
总的物理内存:31.86G
剩余的物理内存:7.42G
已使用的物理内存:24.44G
总线程数:43
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):7122.5M
总的物理内存:31.86G
剩余的物理内存:7.42G
已使用的物理内存:24.44G
总线程数:44
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:23:01
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):6250.5M
总的物理内存:31.86G
剩余的物理内存:7.42G
已使用的物理内存:24.44G
总线程数:44
===========================
jackson转换共用时:3896ms

反序列化测试对比

测试代码:

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import org.junit.Test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class DeserializationTest {
    String[] jsons = new String[]{"src/test/resources/json.json", "src/test/resources/json1.json", "src/test/resources/json2.json"};

    /**
     * 测试gson反序列化
     */
    @Test
    public void testGsonDeserialization() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println("使用gson反序列化开始");
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                BufferedReader reader = new BufferedReader(new FileReader(jsons[i]));
                String json = reader.readLine();

                // 测试gson的反序列化
                Gson gson = new Gson();
                long start = new Date().getTime();
                List<User> list = gson.fromJson(json, List.class);
                long end = new Date().getTime();
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                System.out.println("使用gson:反序列化对象数目:" + list.size() + ", 用时:" + (end - start) + "ms");
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 测试fastjson反序列化
     */
    @Test
    public void testFastJsonDeserialization() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println("使用fastjson反序列化开始");
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                BufferedReader reader = new BufferedReader(new FileReader(jsons[i]));
                String json = reader.readLine();
                // 测试fastjson反序列化
                long start1 = new Date().getTime();
                List<User> list1 = (List<User>) JSON.parse(json);
                long end1 = new Date().getTime();
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                System.out.println("使用fastjson:反序列化对象数目:" + list1.size() + ", 用时:" + (end1 - start1) + "ms");
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 测试jackson反序列化
     */
    @Test
    public void testJacksonDeserialization() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println("使用jackson反序列化开始");
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                BufferedReader reader = new BufferedReader(new FileReader(jsons[i]));
                String json = reader.readLine();
                // 测试jackson反序列化
                ObjectMapper objectMapper = new ObjectMapper();
                long start2 = new Date().getTime();
                List<User> list2 = objectMapper.readValue(json, List.class);
                long end2 = new Date().getTime();
                SystemMonitor.init();
                TimeUnit.SECONDS.sleep(1);
                System.out.println("使用jackson:反序列化对象数目:" + list2.size() + ", 用时:" + (end2 - start2) + "ms");
            } catch (IOException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

结果如下:

操作系统:Windows 10
使用gson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):8M
总的物理内存:31.86G
剩余的物理内存:16.75G
已使用的物理内存:15.11G
总线程数:10
===========================
使用gson:反序列化对象数目:100, 用时:9ms
使用gson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):12M
总的物理内存:31.86G
剩余的物理内存:16.73G
已使用的物理内存:15.13G
总线程数:11
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):20M
总的物理内存:31.86G
剩余的物理内存:16.72G
已使用的物理内存:15.14G
总线程数:12
===========================
使用gson:反序列化对象数目:10000, 用时:35ms
使用gson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):20M
总的物理内存:31.86G
剩余的物理内存:16.71G
已使用的物理内存:15.15G
总线程数:13
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):698.1M
总的物理内存:31.86G
剩余的物理内存:15.76G
已使用的物理内存:16.1G
总线程数:14
===========================
使用gson:反序列化对象数目:1000000, 用时:1061ms
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):4M
总的物理内存:31.86G
剩余的物理内存:16.81G
已使用的物理内存:15.05G
总线程数:9
===========================
使用fastjson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):698.1M
总的物理内存:31.86G
剩余的物理内存:15.76G
已使用的物理内存:16.1G
总线程数:15
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):706.1M
总的物理内存:31.86G
剩余的物理内存:15.76G
已使用的物理内存:16.1G
总线程数:16
===========================
使用fastjson:反序列化对象数目:100, 用时:103ms
使用fastjson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):706.1M
总的物理内存:31.86G
剩余的物理内存:15.76G
已使用的物理内存:16.1G
总线程数:17
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):718.1M
总的物理内存:31.86G
剩余的物理内存:15.74G
已使用的物理内存:16.11G
总线程数:18
===========================
使用fastjson:反序列化对象数目:10000, 用时:53ms
使用fastjson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):718.1M
总的物理内存:31.86G
剩余的物理内存:15.74G
已使用的物理内存:16.12G
总线程数:19
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):693.4M
总的物理内存:31.86G
剩余的物理内存:15.25G
已使用的物理内存:16.61G
总线程数:20
===========================
使用fastjson:反序列化对象数目:1000000, 用时:1050ms
使用jackson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):693.4M
总的物理内存:31.86G
剩余的物理内存:15.24G
已使用的物理内存:16.62G
总线程数:21
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):709.4M
总的物理内存:31.86G
剩余的物理内存:15.22G
已使用的物理内存:16.63G
总线程数:22
===========================
使用jackson:反序列化对象数目:100, 用时:41ms
使用jackson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):713.4M
总的物理内存:31.86G
剩余的物理内存:15.22G
已使用的物理内存:16.64G
总线程数:23
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):721.4M
总的物理内存:31.86G
剩余的物理内存:15.21G
已使用的物理内存:16.65G
总线程数:24
===========================
使用jackson:反序列化对象数目:10000, 用时:29ms
使用jackson反序列化开始
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):725.4M
总的物理内存:31.86G
剩余的物理内存:15.21G
已使用的物理内存:16.65G
总线程数:25
===========================
操作系统:Windows 10
程序启动时间:2021-12-24 14:38:09
cpu核数:12
JAVA_HOME:D:\Java\jdk-16
JAVA_VERSION:16
初始的总内存(JVM):512M
最大可用内存(JVM):8156M
已使用的内存(JVM):1245.4M
总的物理内存:31.86G
剩余的物理内存:14.94G
已使用的物理内存:16.92G
总线程数:26
===========================
使用jackson:反序列化对象数目:1000000, 用时:781ms	

总结

序列化时

  • 100个对象转换,gson最快、fastjson其次、jackson最差 b.
  • 10000个对象转换,gson和fastjson耗时几乎一样,jackson最差
  • 100000个对象转换,fastjson最快、jackson其次、gson最差

反序列化时

  • 数目越小,fastjson的速度越慢,gson最快,jackson一般般
  • 数目大时,fastjson最快,gson其次,jackson与gson相差无几

结语

fastjson的性能适用于处理较多对象,jackson波动最小最稳定,gson适合处理较少数据

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:30:16  更:2021-12-26 22:31:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:27:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码