精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java序列化與JSON序列化大比拼

開發(fā) 后端
大家可能對Java序列化都有一個錯誤的認識,認為Java序列化比JSON的序列化效率高并且序列化的數(shù)據(jù)小,其實實際上并不一定是這樣,我這次就想通過實際測試來解開這個謎團。

一、背景

有項目需要傳輸Map結構的數(shù)據(jù),有人傾向用Java序列化來做,有人傾向用JSON的序列化來做。所以我們還是比比吧。

Java觀點:Object2Object,使用時簡單快速。

JSON觀點:JSON格式與語言無關,擴展性強,速度也應該不慢。

大家可能對Java序列化都有一個錯誤的認識,認為Java序列化比JSON的序列化效率高并且序列化的數(shù)據(jù)小,其實實際上并不一定是這樣,我這次就想通過實際測試來解開這個謎團。

二、測試方式

測試同一個Map<String,Object>并序列化為byte[],并再將byte[]反序列化為 Map<String,Object>的過程。Object中包括 String,Integer,Long,Boolean,F(xiàn)loat,Double常規(guī)類型的數(shù)據(jù)。

序列化:Map<String,Object> -> byte[]

反序列化:byte[] -> Map<String,Object>

測試各種大小不同的Map,并循環(huán)執(zhí)行同一操作N次,來得到一個相對穩(wě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)循環(huán)10萬次

序列化時間比較(y為序列化時間ms)

反序列化時間比較(y為反序列化時間ms)

序列化時間匯總比較(y為序列化與反序列化總時間ms)

序列化后byte大小比較(由于同類線重合顯示為2條線)

Map大小(100-1000)循環(huán)1萬次

序列化時間比較(y為序列化時間ms)

反序列化時間比較(y為反序列化時間ms)

序列化時間匯總比較(y為序列化與反序列化總時間ms)

序列化后byte大小比較(由于同類線重合顯示為2條線)

比較總結

Map在小于100時:

Java的反序列化時的性能要比Java序列化時性能差很多,1.5倍左右差距。

JSON序列化性能明顯由于Java序列化性能,尤其是反序列化過程。并且序列化后的數(shù)據(jù)大小也是JSON格式的小。

Map在大于100小于1000時:

Java的反序列化時的性能并沒有隨Map的大小變化而變差。

JSON陣營中Gson在序列化過程中,比Java只快了那么一點點。在反序列化過程中Gson開始領先與Java,但在Map的大小過700多以后,Gson的反序列化性能比Java要慢。但JSON陣營中的json-smart依然表現(xiàn)出色完全是兩個級別。

并不是Java的序列化速度總是最快體積最小,Java需要考慮對象類型,屬性類型與內部對象信息等一系列對數(shù)據(jù)本身并不相關的內容的處理。JSON以固定的格式,穩(wěn)定簡單的數(shù)據(jù)結構大大簡化了序列化過程,雖然也要創(chuàng)建新的Java數(shù)據(jù)對象但并不會比Java反序列化的速度慢。

從測試結果上看JSON的json-smart更適合項目的需要。

#p#

五、測試代碼源碼

SerializationTest接口

  1. package org.noahx.javavsjson;  
  2.  
  3. import java.util.Map;  
  4.  
  5. /**  
  6.  * Created with IntelliJ IDEA.  
  7.  * User: noah  
  8.  * Date: 3/8/13  
  9.  * Time: 9:59 PM  
  10.  * To change this template use File | Settings | File Templates.  
  11.  */ 
  12. public interface SerializationTest {  
  13.  
  14.     public String getTestName();  
  15.  
  16.     public Map<String, Object> testBytes2Map(byte[] bytes);  
  17.  
  18.     public byte[] testMap2Bytes(Map<String, Object> map);  
  19. }  

JavaSerializationTest

  1. package org.noahx.javavsjson;  
  2.  
  3. import java.io.*;  
  4. import java.util.Map;  
  5.  
  6. /**  
  7.  * Created with IntelliJ IDEA.  
  8.  * User: noah  
  9.  * Date: 3/8/13  
  10.  * Time: 10:05 PM  
  11.  * To change this template use File | Settings | File Templates.  
  12.  */ 
  13. public class JavaSerializationTest implements SerializationTest {  
  14.  
  15.     @Override 
  16.     public String getTestName() {  
  17.         return "Java";  
  18.     }  
  19.  
  20.     @Override 
  21.     public Map<String, Object> testBytes2Map(byte[] bytes) {  
  22.         Map<String, Object> result = null;  
  23.         try {  
  24.             ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);  
  25.             ObjectInputStream inputStream = new ObjectInputStream(byteArrayInputStream);  
  26.  
  27.             result = (Map<String, Object>) inputStream.readObject();  
  28.             inputStream.close();  
  29.         } catch (ClassNotFoundException e) {  
  30.             e.printStackTrace();  
  31.         } catch (IOException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.  
  35.         return result;  
  36.     }  
  37.  
  38.     @Override 
  39.     public byte[] testMap2Bytes(Map<String, Object> map) {  
  40.         byte[] bytes = null;  
  41.         try {  
  42.             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
  43.             ObjectOutputStream outputStream = new ObjectOutputStream(byteArrayOutputStream);  
  44.  
  45.             outputStream.writeObject(map);  
  46.             outputStream.close();  
  47.  
  48.             bytes = byteArrayOutputStream.toByteArray();  
  49.         } catch (IOException e) {  
  50.             e.printStackTrace();  
  51.         }  
  52.         return bytes;  
  53.     }  
  54. }  

CommonLang3SerializationTest

  1. package org.noahx.javavsjson;  
  2.  
  3. import org.apache.commons.lang3.SerializationUtils;  
  4. import java.io.Serializable;  
  5. import java.util.Map;  
  6.  
  7. /**  
  8.  * Created with IntelliJ IDEA.  
  9.  * User: noah  
  10.  * Date: 3/9/13  
  11.  * Time: 2:24 AM  
  12.  * To change this template use File | Settings | File Templates.  
  13.  */ 
  14. public class CommonLang3SerializationTest implements SerializationTest {  
  15.     @Override 
  16.     public String getTestName() {  
  17.         return "Commons Lang3";  
  18.     }  
  19.  
  20.     @Override 
  21.     public Map<String, Object> testBytes2Map(byte[] bytes) {  
  22.         return (Map<String, Object>) SerializationUtils.deserialize(bytes);  
  23.     }  
  24.  
  25.     @Override 
  26.     public byte[] testMap2Bytes(Map<String, Object> map) {  
  27.         return SerializationUtils.serialize((Serializable) map);  
  28.     }  
  29. }  

GsonSerializationTest

  1. package org.noahx.javavsjson;  
  2.  
  3. import com.google.gson.Gson;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.util.Map;  
  6.  
  7. /**  
  8.  * Created with IntelliJ IDEA.  
  9.  * User: noah  
  10.  * Date: 3/8/13  
  11.  * Time: 10:02 PM  
  12.  * To change this template use File | Settings | File Templates.  
  13.  */ 
  14. public class GsonSerializationTest implements SerializationTest {  
  15.  
  16.     private Gson gson;  
  17.  
  18.     public GsonSerializationTest() {  
  19.         gson = new Gson();  
  20.     }  
  21.  
  22.     @Override 
  23.     public String getTestName() {  
  24.         return "Gson";  
  25.     }  
  26.  
  27.     @Override 
  28.     public Map<String, Object> testBytes2Map(byte[] bytes) {  
  29.         Map<String, Object> result = null;  
  30.         try {  
  31.             result = gson.fromJson(new String(bytes, "UTF-8"), Map.class);  
  32.         } catch (UnsupportedEncodingException e) {  
  33.             e.printStackTrace();  
  34.         }  
  35.         return result;  
  36.     }  
  37.  
  38.     @Override 
  39.     public byte[] testMap2Bytes(Map<String, Object> map) {  
  40.         String str = gson.toJson(map);  
  41.         byte[] bytes = null;  
  42.         try {  
  43.             bytes = str.getBytes("UTF-8");  
  44.         } catch (UnsupportedEncodingException e) {  
  45.             e.printStackTrace();  
  46.         }  
  47.         return bytes;  
  48.     }  
  49. }  

JsonSmartSerializationTest

  1. package org.noahx.javavsjson;  
  2.  
  3. import net.minidev.json.JSONObject;  
  4. import net.minidev.json.JSONValue;  
  5. import net.minidev.json.parser.ParseException;  
  6. import java.io.UnsupportedEncodingException;  
  7. import java.util.Map;  
  8.  
  9. /**  
  10.  * Created with IntelliJ IDEA.  
  11.  * User: noah  
  12.  * Date: 3/9/13  
  13.  * Time: 1:30 AM  
  14.  * To change this template use File | Settings | File Templates.  
  15.  */ 
  16. public class JsonSmartSerializationTest implements SerializationTest {  
  17.     @Override 
  18.     public String getTestName() {  
  19.         return "Json Smart";  
  20.     }  
  21.  
  22.     @Override 
  23.     public Map<String, Object> testBytes2Map(byte[] bytes) {  
  24.         Map<String, Object> map = null;  
  25.         try {  
  26.             map = (Map<String, Object>) JSONValue.parseStrict((new String(bytes, "UTF-8")));  
  27.         } catch (ParseException e) {  
  28.             e.printStackTrace();  
  29.         } catch (UnsupportedEncodingException e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.         return map;  
  33.     }  
  34.  
  35.     @Override 
  36.     public byte[] testMap2Bytes(Map<String, Object> map) {  
  37.         String str = JSONObject.toJSONString(map);  
  38.         byte[] result = null;  
  39.         try {  
  40.             result = str.getBytes("UTF-8");  
  41.         } catch (UnsupportedEncodingException e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.         return result;  
  45.     }  
  46. }  

源碼下載:http://sdrv.ms/12ECmgG

P.S.

我也測試過Map<String,String>固定數(shù)據(jù)類型value只為String的情況,這時Java與JSON的性能的差距會減小,但JSON序列化性能與數(shù)據(jù)大小還是占優(yōu)勢,尤其是反序列化的速度JSON更出色。

Gson在數(shù)值反序列化后,因為Object無法確定類型,Map中的Long,Integer,F(xiàn)loat統(tǒng)一轉為了Double類型。

json-smart不一樣,如果整數(shù)超過Integer的范圍轉Long,沒有超過轉Integer。浮點Float轉為Double類型。

原文鏈接:http://my.oschina.net/noahxiao/blog/112759

責任編輯:張偉 來源: oschina
相關推薦

2018-03-19 10:20:23

Java序列化反序列化

2022-08-06 08:41:18

序列化反序列化Hessian

2023-12-13 13:49:52

Python序列化模塊

2021-11-18 07:39:41

Json 序列化Vue

2012-04-13 10:45:59

XML

2011-06-01 15:05:02

序列化反序列化

2009-08-24 17:14:08

C#序列化

2009-07-29 13:39:02

JSON序列化和反序列ASP.NET AJA

2009-06-14 22:01:27

Java對象序列化反序列化

2009-08-06 11:16:25

C#序列化和反序列化

2011-05-18 15:20:13

XML

2018-01-17 16:38:07

MSONJSON序列化

2011-06-01 14:50:48

2019-11-20 10:07:23

web安全PHP序列化反序列化

2009-08-25 14:24:36

C#序列化和反序列化

2011-06-01 14:26:11

序列化

2023-11-20 08:44:18

數(shù)據(jù)序列化反序列化

2010-03-19 15:54:21

Java Socket

2011-03-04 09:25:51

Java序列化

2024-01-30 13:32:51

JSON反序列化序列化
點贊
收藏

51CTO技術棧公眾號

国产专区欧美精品| 国产精品久久久久av蜜臀| 欧美国产禁国产网站cc| 国产日韩中文字幕| 青娱乐国产精品| 日韩最新在线| 91精品在线免费观看| 成人免费观看cn| 岛国视频免费在线观看| 国产一区二区福利视频| 欧洲精品久久久| 波多野结衣爱爱视频| 天天做夜夜做人人爱精品| 欧美日韩大陆在线| 男人日女人下面视频| av中文天堂在线| 成人激情小说网站| 国产精品偷伦一区二区| 日韩xxxxxxxxx| 天天av综合| 亚洲欧美日韩精品| 91精品国产综合久久久久久| 国产精品视频导航| 香蕉免费毛片视频| 亚洲国产老妈| 中文字幕亚洲欧美一区二区三区 | 免费在线观看一区二区| 99热这里只有精品在线| 久久久成人网| 97色在线视频观看| 国产三级国产精品国产国在线观看| 亚洲精品无吗| 亚洲高清免费观看高清完整版| 亚洲综合日韩欧美| 在线成人视屏| 精品久久久久久中文字幕一区奶水| 91视频成人免费| 在线播放日本| 国产日韩精品一区二区浪潮av| 国产伦精品一区二区三区四区视频 | 欧美成人综合| 伊人青青综合网站| 中文字幕 自拍| 亚洲精品亚洲人成在线| 亚洲国产精品一区二区三区| 亚洲国产欧美日韩在线| 青青伊人久久| 欧美精品九九99久久| 亚洲天堂av线| 国产91在线精品| 欧美日韩视频不卡| 九九热精品在线播放| 精品裸体bbb| 欧美性猛交xxxx黑人交| 手机视频在线观看| 久久亚洲精品中文字幕| 欧美日韩在线播| 色一情一区二区三区| 日韩国产大片| 欧美一级夜夜爽| 国产精品一区二区免费看| 91传媒久久久| 日韩激情电影免费看| 欧美日韩亚洲激情| 92看片淫黄大片一级| 性高爱久久久久久久久| 一本到一区二区三区| 韩国日本美国免费毛片| 精品福利在线| 日韩免费观看高清完整版| 日本女人性视频| 91成人午夜| 日韩av综合网| 亚洲午夜久久久久久久国产| 久久亚洲成人| 色综合久综合久久综合久鬼88 | 精品久久中文字幕久久av| 91精品91久久久中77777老牛| 成人福利av| 在线免费观看日韩欧美| 亚洲欧美日本一区二区三区| 日韩在线亚洲| 国产视频丨精品|在线观看| www亚洲色图| 欧美91视频| 欧日韩不卡在线视频| 中文天堂在线播放| 国产白丝精品91爽爽久久| 久久综合毛片| 黄在线免费观看| 亚洲成人av电影| 91激情视频在线| 日韩欧美中文字幕在线视频 | 99porn视频在线| 亚洲三级中文字幕| 国产精品久久久久精k8 | 亚洲熟女毛茸茸| 日本高清中文字幕在线| 亚洲综合激情小说| av免费在线播放网站| 亚洲欧洲二区| 亚洲美女激情视频| 最新一区二区三区| 新67194成人永久网站| 国产伦精品免费视频| 国产美女明星三级做爰| 成人免费视频一区二区| 欧美日韩综合网| 在线看女人毛片| 色成人在线视频| 韩国三级在线看| 婷婷亚洲成人| 欧美福利视频网站| 中文字幕一区二区三区四区视频| 成人教育av在线| 在线免费观看成人| 日韩大片欧美大片| 精品人伦一区二区色婷婷| 97在线观看免费视频| 亚洲福利专区| 亚洲一区美女视频在线观看免费| 九色在线免费| 精品久久久久久久久久国产 | 日本黄色免费观看| 日韩免费小视频| 亚洲成年人在线播放| 韩国一级黄色录像| 日韩高清不卡在线| 国产美女精品久久久| 欧美69xxxx| 欧美三级免费观看| 国产+高潮+白浆+无码| 色综合久久一区二区三区| 欧美在线视频导航| 色一情一乱一乱一区91av| 亚洲精品欧美激情| 亚洲综合伊人久久| 欧美好骚综合网| 国产精品嫩草影院久久久| 免费福利在线观看| 精品欧美国产一区二区三区| 欧美丰满熟妇bbb久久久| 亚洲大全视频| 91aaaa| 成人在线直播| 欧美一区二区三区日韩| 久久精品一区二区三区四区五区| 日产欧产美韩系列久久99| 日韩福利二区| av亚洲一区| 中文字幕成人精品久久不卡| wwwwww在线观看| 亚洲精品一级片| 91在线视频免费91| 欧美色图另类小说| 国产欧美日韩精品一区二区三区| 国产精品成熟老女人| 国内三级在线观看| 欧美视频在线不卡| 手机看片国产日韩| 秋霞av亚洲一区二区三| 一区二区成人国产精品| 99re8精品视频在线观看| 久久福利视频网| 成人av无码一区二区三区| 亚洲综合一区二区三区| 国产69视频在线观看| 国产色综合网| 日韩一区二区三区高清| 精品国产黄a∨片高清在线| 久久久精品亚洲| 韩国中文字幕hd久久精品| 欧美日韩一区二区在线| 欧美丰满老妇熟乱xxxxyyy| 国产一区二区三区蝌蚪| 免费看毛片的网址| 国产日产精品_国产精品毛片| 国产精品美女网站| 羞羞的网站在线观看| 日韩电影免费在线观看中文字幕 | 青青国产91久久久久久| 久久av秘一区二区三区| 激情亚洲另类图片区小说区| 国产ts一区二区| 黄视频网站在线看| 亚洲国产日韩一区| 色老头一区二区| 亚洲欧美aⅴ...| 中文字幕5566| 久久国产人妖系列| 久久久久久免费看| 日韩理论片av| 国产视频一区二区三区四区| 成人午夜精品| 欧美日韩成人网| 国产在线一二三区| 日韩美女视频在线| 4438全国成人免费| 亚洲av无码乱码在线观看性色| 午夜一区二区三区视频| 色偷偷www8888| 91丨porny丨中文| 性久久久久久久久久久久久久| 国产手机视频一区二区 | 香蕉视频免费在线播放| 日韩一级二级三级| 中文字幕日韩第一页| 亚洲成人在线免费| 欧美风情第一页| 国产日韩影视精品| 香蕉视频污视频| 国内成+人亚洲+欧美+综合在线| 日本精品一区在线观看| 欧美 日韩 国产 一区| 日本视频一区二区不卡| 六月丁香久久丫| 3d蒂法精品啪啪一区二区免费| 范冰冰一级做a爰片久久毛片| 欧美精品午夜视频| 日本中文字幕电影在线免费观看| 亚洲精品影视在线观看| 亚洲国产www| 制服丝袜日韩国产| 综合久久中文字幕| 高跟丝袜欧美一区| 99免费在线观看| 亚洲美女淫视频| 亚洲 欧美 国产 另类| 久久色.com| 成人性生活免费看| 国产成人h网站| 三级av免费看| 精东粉嫩av免费一区二区三区| 国产黄色特级片| 亚洲欧美久久久| 日韩欧美视频网站| 在线观看视频日韩| 精品国偷自产一区二区三区| 欧美午夜在线视频| 天天做天天躁天天躁| 欧美成人久久| 日韩视频 中文字幕| 亚洲女同一区| 超薄肉色丝袜足j调教99| 这里只有精品在线| 无码毛片aaa在线| 久久精品一区二区不卡| 视频一区二区在线| 国产成人影院| 亚洲国产精品久久久久久女王| 国产探花一区在线观看| 日韩av图片| 日韩在线观看| 在线免费观看成人网| 一区二区日韩欧美| 一区二区免费看| 精品人妻一区二区三区视频| 2023国产精品| 毛片aaaaaa| 国产精品毛片a∨一区二区三区| 成人无码精品1区2区3区免费看| 国产精品久久久久久久久图文区 | 成人区精品一区二区婷婷| 婷婷久久五月天| 亚洲成av人片乱码色午夜| 中文字幕日韩精品无码内射| 亚洲国产激情| 成人小视频在线看| 美国av一区二区| 欧美xxxxxbbbbb| 成+人+亚洲+综合天堂| 欧美大片免费播放器| 中文字幕乱码亚洲精品一区| 黑鬼狂亚洲人videos| 亚洲高清视频在线| 在线免费观看国产精品| 欧美日韩国产经典色站一区二区三区| 国产精品亚洲lv粉色| 欧美岛国在线观看| 日韩偷拍自拍| 综合欧美国产视频二区| 欧美aaa免费| 热99精品只有里视频精品| 男人天堂久久| av免费精品一区二区三区| 久久午夜影院| 中文字幕在线亚洲精品| 亚洲大片av| 无限资源日本好片| www.在线成人| 日韩欧美在线视频播放| 性久久久久久久| 中文字幕精品无码亚| 精品国产免费视频| 大地资源中文在线观看免费版| 久久成人综合视频| 88xx成人永久免费观看| 99精彩视频| 日韩系列欧美系列| 婷婷无套内射影院| 久久99精品一区二区三区三区| 亚洲一区二区乱码| 亚洲美女免费视频| www.久久网| 日韩精品在线观看一区| 羞羞网站在线免费观看| 国产精品高潮视频| 麻豆成人入口| 久久视频免费在线| 免费av网站大全久久| 中出视频在线观看| 亚洲伊人色欲综合网| 在线视频欧美亚洲| 亚洲人a成www在线影院| 国产三线在线| 成人写真视频福利网| 精品久久不卡| 男人操女人免费软件| 成人免费视频视频| 91在线免费视频| 久久99成人| 亚洲一区二区在| 日本欧美在线观看| 无码一区二区三区在线| 午夜精品久久久久久| а√中文在线资源库| 久青草国产97香蕉在线视频| 69堂精品视频在线播放| 欧美日韩电影一区二区| 999在线观看精品免费不卡网站| 中国老熟女重囗味hdxx| 亚洲人妖av一区二区| 自拍偷拍色综合| 在线成人中文字幕| 国产综合av| 日本高清不卡三区| 视频一区欧美精品| 蜜桃av免费看| 日本高清无吗v一区| 男男激情在线| 国产精品成人一区二区三区吃奶| 欧美极品中文字幕| 麻豆av免费在线| 国产亚洲欧美中文| 最近中文字幕免费在线观看| 国产一区二区三区视频免费| 日韩电影av| 亚洲黄色成人久久久| 久久成人av少妇免费| 亚洲熟女毛茸茸| 欧美一级在线免费| 爱福利在线视频| 精品国产一区二区三区麻豆免费观看完整版 | 一区二区日韩视频| 精品国内自产拍在线观看| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 亚洲欧美视频在线| av一区在线播放| 亚洲精蜜桃久在线| 精品写真视频在线观看| 黄页网站免费观看| 日韩电影大片中文字幕| gay欧美网站| 亚洲一卡二卡三卡| 韩国三级中文字幕hd久久精品| 久久人妻无码aⅴ毛片a片app| 91精品免费在线| 懂色av一区| 欧美一区二区视频在线| 蜜臀av国产精品久久久久| 国产盗摄一区二区三区在线| 精品国产髙清在线看国产毛片 | 国产在线观看精品| 欧美视频福利| 久久精品老司机| 欧美三级电影在线观看| 国产黄色在线观看| 精品视频一区在线| 日精品一区二区三区| 欧美成人剧情片在线观看| 日本一区二区乱| 成人综合视频在线| 国产精品色一区二区三区| www.久久精品.com| 日韩av电影免费观看高清| 欧美成人milf| 影音先锋人妻啪啪av资源网站| 日本高清不卡一区| 天使と恶魔の榨精在线播放| 久久国产欧美精品| 韩国v欧美v亚洲v日本v| av中文在线播放| 久久亚洲一区二区三区四区五区高| 好吊妞视频这里有精品| 国产又大又黄又猛| 亚洲国产成人av网| 欧美天天影院| 久久人人97超碰人人澡爱香蕉| 久久国产尿小便嘘嘘| 国产a∨精品一区二区三区仙踪林|