精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品一品二品| 精品久久中文| 欧美日韩在线免费观看| 久久99久久精品国产| 中文字幕免费在线看| 先锋资源久久| 亚洲欧洲视频在线| 99中文字幕在线| 欧美伦理91| 一区在线观看视频| 女同一区二区| 美女扒开腿免费视频| 在线免费看h| 国产一区二区精品久久99| 亚洲欧洲在线视频| 日韩久久久久久久久久久| 自拍偷拍欧美视频| 亚洲人成网站精品片在线观看| 久久国产精品-国产精品| 国产强伦人妻毛片| 精品国产乱码久久久| 日韩午夜电影在线观看| 制服丝袜综合日韩欧美| 视频一区二区在线播放| 影音先锋中文字幕一区| 永久免费毛片在线播放不卡| 精品影片一区二区入口| 国产精品麻豆| 在线日韩国产精品| 精品视频免费在线播放| 图片区小说区亚洲| 中文字幕日韩欧美一区二区三区| 欧美日韩电影一区二区| 婷婷在线观看视频| 国产精品18久久久久久久久| 久久午夜视频| 欧美日韩亚洲视频| 亚洲一区三区电影在线观看| 欧美日韩在线精品一区二区三区激情综| 国产九九视频一区二区三区| 国产精品日韩电影| 精品不卡一区二区| 一区二区三区高清视频在线观看| 欧美国产日韩免费| 日本一级免费视频| 国产精品午夜一区二区三区| 欧美性感一类影片在线播放| 亚洲一区二区在| av网在线观看| 欧美激情一区三区| 亚洲高清视频在线观看| 国产1区2区3区在线| 91麻豆swag| 蜜桃久久精品乱码一区二区| 亚洲av成人无码久久精品老人 | 国产精品一区二区三区免费视频| 中文字幕精品视频在线观看| 欧美电影免费观看高清| 一个色综合导航| 免费看日本黄色片| 欧美电影院免费观看| 黄色一区二区三区| 国产白丝袜美女久久久久| 国产乱码午夜在线视频| 欧美日韩国产精品专区 | 日韩精品一区二区三区中文精品| 精品在线一区| 伊人久久一区二区| 裸体在线国模精品偷拍| 久久久久久久久久亚洲| 国产精品 欧美 日韩| 一本久道久久综合狠狠爱| 国产91精品黑色丝袜高跟鞋| 极品魔鬼身材女神啪啪精品| 中文字幕日韩欧美精品高清在线| 欧美美女15p| 亚洲精品视频在线观看免费视频| 久久av一区| 国产一区欧美二区三区| 亚洲成人精品女人久久久| 99视频精品免费视频| 水蜜桃一区二区三区| a天堂中文在线官网在线| 午夜精品在线视频一区| 黄色一级免费大片| 亚洲不卡在线| 国产一区二区久久精品| 久久久久亚洲AV成人无码国产| 性欧美xxxx免费岛国不卡电影| 中文字幕日韩av| aa一级黄色片| 99re8这里有精品热视频8在线| 亚洲精品电影在线观看| www.日本高清视频| 一区免费在线| 国产乱肥老妇国产一区二| 黄色av中文字幕| 国产精品热久久久久夜色精品三区| 九九久久九九久久| 欧美极品另类| 欧美日韩免费观看中文| 17c国产在线| 亚洲毛片免费看| 欧美成人精品三级在线观看| 91视频久久久| 99视频精品在线| 中国老女人av| 99re久久| 日韩精品在线视频美女| 欧美精品一区二区成人| 日本成人在线视频网站| 国产一区二区不卡视频在线观看| av播放在线| 色综合欧美在线视频区| 图片区偷拍区小说区| 91精品综合久久久久久久久久久| 欧美影院久久久| 亚洲女同志亚洲女同女播放| 国产精品美女久久久久av爽李琼| 国产二区视频在线播放| 99国产精品久久一区二区三区| 精品国产自在精品国产浪潮| 99re国产在线| 99这里只有精品| 青青青青在线视频| 日韩高清一区| xvideos国产精品| 免费黄色片视频| 91性感美女视频| 久久久性生活视频| 97视频一区| 欧美激情喷水视频| www.日韩高清| 亚洲精品高清在线观看| 激情图片中文字幕| 国产精品99视频| 国产伦精品一区二区三区精品视频 | 中文字幕在线观看播放| 精品视频在线免费观看| 亚洲精品mv在线观看| 色一区二区三区四区| 欧美成年人视频网站| 一级黄色大片免费观看| 国产精品自在欧美一区| 一区二区精品免费视频| 欧美xxxx性| 久久久国产精彩视频美女艺术照福利| 中文字幕在线观看视频一区| 国产精品人妖ts系列视频| 日韩成人精品视频在线观看| 久久麻豆精品| 91欧美精品午夜性色福利在线| 蜜桃视频网站在线| 91精品国产综合久久小美女| 久久久久亚洲av无码专区体验| 国产一区91精品张津瑜| 国产aaa免费视频| 免费福利视频一区| 欧美中文在线观看国产| 国产露出视频在线观看| 欧美午夜不卡在线观看免费| 国产大屁股喷水视频在线观看| 韩日av一区二区| 91成人综合网| 美女久久99| 国产欧洲精品视频| 香蕉成人app免费看片| 精品国产一区二区亚洲人成毛片 | 91久久久免费一区二区| 在线观看免费黄色网址| 黄色av日韩| 久久爱av电影| 美女视频一区| 欧美精品www在线观看| 午夜在线视频免费| 欧美最新大片在线看| 神马久久精品综合| 成人av网在线| 男女激烈动态图| 高清精品xnxxcom| 国产www精品| 男人的天堂在线视频免费观看| 日韩精品影音先锋| 波多野结衣电车| 一区二区三区日韩欧美精品| 亚洲av无码一区二区三区网址| 亚洲久久久久| 久久精品人人做人人爽电影| 国产国产一区| 韩国福利视频一区| 日韩免费网站| 日韩精品久久久久久久玫瑰园| 在线播放一级片| 亚洲va在线va天堂| 蜜桃av免费在线观看| 成人av资源网站| 九九热精品在线播放| 亚洲精品影视| 国产免费xxx| 欧美系列电影免费观看| 国产在线一区二区三区播放| 色999久久久精品人人澡69| 91av视频在线播放| 1024在线播放| 日韩在线精品一区| 深夜福利在线视频| 欧美大片在线观看一区二区| 影音先锋国产资源| 欧美日韩国产专区| 免费日韩在线视频| 亚洲丝袜另类动漫二区| 国产美女免费网站| 91丝袜美腿高跟国产极品老师| 无码人妻少妇色欲av一区二区| 综合精品久久| 先锋在线资源一区二区三区| 色愁久久久久久| 97se国产在线视频| 996久久国产精品线观看| 日韩免费观看高清| sm在线观看| 欧美精品久久久久久久免费观看| 乱人伦中文视频在线| 尤物99国产成人精品视频| 久热av在线| 精品一区二区三区电影| 深夜福利视频网站| 亚洲成人精品视频| 亚洲黄色在线观看视频| 日韩三级免费观看| 99国产在线播放| 91麻豆精品国产综合久久久久久| 亚洲图片在线播放| 欧美日韩精品一区二区| 中文字幕资源网| 色婷婷国产精品综合在线观看| 精品欧美一区二区三区免费观看| 亚洲愉拍自拍另类高清精品| 妺妺窝人体色www在线下载| 亚洲欧洲成人精品av97| 99精品中文字幕| √…a在线天堂一区| 国产精品精品软件男同| 亚洲视频图片小说| 一级黄色片日本| 亚洲免费大片在线观看| 久久久久久久蜜桃| 亚洲精品大片www| 久久国产免费观看| 亚洲国产中文字幕| 91香蕉在线视频| 欧美性猛交xxxx乱大交蜜桃 | 亚洲s色大片| 久久精品免费电影| 国产激情在线观看| 欧美老少配视频| 爱情岛亚洲播放路线| 欧美在线视频一区二区| 国产极品久久久久久久久波多结野| 国产精品视频在线播放| 国产精品成人**免费视频| 成人片在线免费看| 日韩精品亚洲aⅴ在线影院| 国产日韩欧美精品| 香蕉视频一区| 亚洲一区二区三区四区中文| 欧美三级不卡| 噜噜噜久久亚洲精品国产品麻豆| 亚洲一卡久久| 欧洲熟妇精品视频| 国产一区二区三区免费观看| 熟妇女人妻丰满少妇中文字幕| 成人高清视频在线| 一级片久久久久| 亚洲视频一区在线观看| 久久免费视频播放| 日韩欧美亚洲范冰冰与中字| 国产又大又黄又爽| 精品国产乱码久久久久久闺蜜| 日本韩国一区| 久久精品一本久久99精品| 超碰高清在线| 国产欧美最新羞羞视频在线观看| 97视频一区| 亚洲国产欧洲综合997久久| 日韩精品欧美激情一区二区| 国产精品h视频| 91久久综合| 色呦色呦色精品| 99国产精品视频免费观看| 亚洲欧洲综合网| 亚洲国产综合人成综合网站| 又污又黄的网站| 亚洲成人黄色网| 国产黄在线看| 久久久久久69| 福利一区二区免费视频| 电影午夜精品一区二区三区| 成人嫩草影院| 波多野结衣综合网| 国产在线国偷精品产拍免费yy| 噜噜噜在线视频| 一区二区三区在线观看视频| 久久影视中文字幕| 亚洲国产精久久久久久| 免费在线观看av| 国产激情视频一区| 美国十次av导航亚洲入口| 视频一区二区视频| 日韩电影在线一区| aaaaaav| 亚洲图片欧美视频| 国产精品无码在线播放| 一区二区三区四区在线观看视频| 麻豆视频在线看| 99视频免费观看| 一本一道久久综合狠狠老 | 国产黑丝在线一区二区三区| 免费看污片的网站| 欧美日韩在线视频首页| 丰满肥臀噗嗤啊x99av| 欧美精品在线播放| 亚洲午夜国产成人| 影音先锋亚洲视频| 美女看a上一区| 成人av毛片在线观看| 久久久国产精品午夜一区ai换脸| 日本一本高清视频| 日韩精品一区二区三区四区| 国产超级va在线视频| 国产在线高清精品| 手机在线一区二区三区| 亚洲国产精品三区| 国产午夜精品一区二区三区嫩草 | 免费毛片在线看片免费丝瓜视频 | 一级黄色大片免费看| 亚洲免费av在线| 国产精品伊人久久| 久久久精品电影| 国产亚洲久久| 国产日韩欧美大片| 国产激情视频一区二区三区欧美| 91狠狠综合久久久| 日韩欧美一区二区三区在线| 成人片在线看| 成人影片在线播放| 亚洲国产日韩在线| 成人啪啪18免费游戏链接| 亚洲一区二区视频| 网站黄在线观看| 热久久免费视频精品| 欧美日韩一区二区三区视频播放| 91视频免费版污| 中文字幕日韩一区二区| 99热在线只有精品| 亚洲丝袜在线视频| 成人看片在线观看| 制服诱惑一区| 国产91在线|亚洲| 青青操免费在线视频| 国产一区二区三区视频 | 丝袜美腿亚洲一区| 精品伦精品一区二区三区视频密桃| 欧美日韩国产片| 视频在线观看入口黄最新永久免费国产| av资源站久久亚洲| 国产精品毛片一区二区三区| 四虎国产精品成人免费入口| 欧美日韩久久久| av电影在线免费| 欧美精品人人做人人爱视频| 日韩精品成人一区二区三区| 亚洲欧美综合7777色婷婷| 欧美精品99久久久**| heyzo在线| 欧美在线一二三区| 国产乱码字幕精品高清av| 午夜影院在线看| 中文字幕日韩欧美在线视频| 欧美影院视频| 国产福利一区视频| 亚洲欧美电影一区二区| 三区在线观看| 96pao国产成视频永久免费| 国产日韩一区二区三区在线| 婷婷丁香综合网| 亚洲福利在线视频| 国产在视频一区二区三区吞精| 成年丰满熟妇午夜免费视频 | 热色播在线视频| 中文字幕av日韩精品| 99精品视频一区二区| 97精品人妻一区二区三区香蕉| 97精品视频在线观看| 欧美大片aaaa| 91中文字幕永久在线| 欧美性猛交xxxx偷拍洗澡| 久草中文在线| 日本高清不卡三区| 成人av在线资源|