一、背景
有项目需要传输Map结构的数据,有人倾向用JAVA序列化来做,有人倾向用JSON的序列化来做。所以我们还是比比吧。
Java观点:Object2Object,使用时简单快速。
JSON观点:JSON格式与语言无关,扩展性强,速度也应该不慢。
大家可能对Java序列化都有一个错误的认识,认为Java序列化比JSON的序列化效率高并且序列化的数据小,其实实际上并不一定是这样,我这次就想通过实际测试来解开这个谜团。
二、测试方式
测试同一个Map并序列化为byte[],并再将byte[]反序列化为Map的过程。Object中包括String,Integer,Long,Boolean,Float,Double常规类型的数据。
序列化:Map -> byte[]
反序列化:byte[] -> Map
测试各种大小不同的Map,并循环执行同一操作N次,来得到一个相对稳定的线性结果。
三、比较的对象
JAVA:
手写Java(1.6.0_32)与Common Lang3(3.1)的SerializationUtils。
JSON:
将采用Gson(2.2.2)与json-smart(2.0-RC2)两种不同的JSON解析器。json-smart号称是速度最快的JSON解析器。
四、比较结果
Map大小(10-100)循环10万次
序列化时间比较(y为序列化时间ms)
反序列化时间比较(y为反序列化时间ms)
序列化时间汇总比较(y为序列化与反序列化总时间ms)
序列化后byte大小比较(由于同类线重合显示为2条线)
Map大小(100-1000)循环1万次
序列化时间比较(y为序列化时间ms)