激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java原生序列化和Kryo序列化性能實例對比分析

java原生序列化和Kryo序列化性能實例對比分析

2021-01-15 14:12壞~牧羊人 Java教程

這篇文章主要介紹了java原生序列化和Kryo序列化性能實例對比分析,涉及Java和kryo序列化和反序列化相關實例,小編覺得很不錯,這里分享給大家,希望給大家一個參考。

簡介

最近幾年,各種新的高效序列化方式層出不窮,不斷刷新序列化性能的上限,最典型的包括:

專門針對Java語言的:Kryo,FST等等

跨語言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等

這些序列化方式的性能多數都顯著優于hessian2(甚至包括尚未成熟的dubbo序列化)。有鑒于此,我們為dubbo引入Kryo和FST這 兩種高效Java序列化實現,來逐步取代hessian2。其中,Kryo是一種非常成熟的序列化實現,已經在Twitter、Groupon、 Yahoo以及多個著名開源項目(如Hive、Storm)中廣泛的使用。而FST是一種較新的序列化實現,目前還缺乏足夠多的成熟使用案例,但它還是非 常有前途的,下面我們比較下,java原生序列化Kryo序列化性能比較

1、實體類 Simple.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package bhz.entity;
import java.io.Serializable;
import java.util.Map;
public class Simple implements Serializable
{
   private static final long serialVersionUID = -4914434736682797743L;
   private String name;
   private int age;
   private Map<String,Integer> map;
   public Simple(){
   }
   public Simple(String name,int age,Map<String,Integer> map){
     this.name = name;
     this.age = age;
     this.map = map;
   }
   public String getName() {
    return name;
   }
   public void setName(String name) {
    this.name = name;
   }
   public int getAge() {
    return age;
   }
   public void setAge(int age) {
    this.age = age;
   }
   public Map<String, Integer> getMap() {
    return map;
   }
   public void setMap(Map<String, Integer> map) {
    this.map = map;
   }
}

2、java原生序列化 OriginalSerializable.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package bhz.test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
import bhz.entity.Simple;
public class OriginalSerializable {
  public static void main(String[] args) throws IOException, ClassNotFoundException {
    long start = System.currentTimeMillis();
    setSerializableObject();
    System.out.println("java原生序列化時間:" + (System.currentTimeMillis() - start) + " ms" ); 
    start = System.currentTimeMillis();
    getSerializableObject();
    System.out.println("java原生反序列化時間:" + (System.currentTimeMillis() - start) + " ms");
  }
  public static void setSerializableObject() throws IOException{
    FileOutputStream fo = new FileOutputStream("D:/file2.bin");
    ObjectOutputStream so = new ObjectOutputStream(fo);
    for (int i = 0; i < 100000; i++) {
      Map<String,Integer> map = new HashMap<String, Integer>(2);
      map.put("zhang0", i);
      map.put("zhang1", i);
      so.writeObject(new Simple("zhang"+i,(i+1),map));
    }
    so.flush();
    so.close();
  }
  public static void getSerializableObject(){
     FileInputStream fi;
    try {
      fi = new FileInputStream("D:/file2.bin");
      ObjectInputStream si = new ObjectInputStream(fi);
      Simple simple =null;
      while((simple=(Simple)si.readObject()) != null){
        //System.out.println(simple.getAge() + " " + simple.getName());
      }
      fi.close();
      si.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      //e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
}

3、kyro序列化 KyroSerializable.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package bhz.test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.objenesis.strategy.StdInstantiatorStrategy;
import bhz.entity.Simple;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.KryoException;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
public class KyroSerializable {
  public static void main(String[] args) throws IOException {
    long start = System.currentTimeMillis();
    setSerializableObject();
    System.out.println("Kryo 序列化時間:" + (System.currentTimeMillis() - start) + " ms" );
    start = System.currentTimeMillis();
    getSerializableObject();
    System.out.println("Kryo 反序列化時間:" + (System.currentTimeMillis() - start) + " ms");
  }
  public static void setSerializableObject() throws FileNotFoundException{
    Kryo kryo = new Kryo();
    kryo.setReferences(false);
    kryo.setRegistrationRequired(false);
    kryo.setInstantiatorStrategy(new StdInstantiatorStrategy());
    kryo.register(Simple.class);
    Output output = new Output(new FileOutputStream("D:/file1.bin"));
    for (int i = 0; i < 100000; i++) {
      Map<String,Integer> map = new HashMap<String, Integer>(2);
      map.put("zhang0", i);
      map.put("zhang1", i);
      kryo.writeObject(output, new Simple("zhang"+i,(i+1),map));
    }
    output.flush();
    output.close();
  }
  public static void getSerializableObject(){
    Kryo kryo = new Kryo();
    kryo.setReferences(false);
    kryo.setRegistrationRequired(false);
    kryo.setInstantiatorStrategy(new StdInstantiatorStrategy());
    Input input;
    try {
      input = new Input(new FileInputStream("D:/file1.bin"));
      Simple simple =null;
      while((simple=kryo.readObject(input, Simple.class)) != null){
        //System.out.println(simple.getAge() + " " + simple.getName() + " " + simple.getMap().toString());
      }
      input.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch(KryoException e){
    }
  }
}

 4、測試結果對比

java原生序列化時間:8281 ms

java原生反序列化時間:5899 ms

Kryo 序列化時間:630 ms

Kryo 反序列化時間:15 ms

經過對比,可以發現kryo是java原生序列化性能十幾倍

總結

以上就是本文關于java原生序列化和Kryo序列化性能實例對比分析的全部內容,希望對大家有所幫助,有什么問題可以隨時留言,小編必定及時回復大家,感謝朋友們對本站的支持。

原文鏈接:http://www.cnblogs.com/520playboy/p/6341490.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产91丝袜在线熟 | 又黄又爽免费无遮挡在线观看 | 久久久综合久久久 | 精国产品一区二区三区 | 91成人免费看片 | 免费观看国产精品视频 | 蜜桃传媒视频麻豆第一区免费观看 | 最新一级毛片 | 手机在线看片国产 | 国产一级在线观看视频 | 男女羞羞在线观看 | 久久久久北条麻妃免费看 | 一级片在线免费 | 国产亚洲在线 | 神秘电影91 | 欧美乱淫 | 国产午夜精品久久久久久久蜜臀 | 国产精品99免费视频 | 亚洲情av| 天天躁狠狠躁夜躁2020挡不住 | 最新中文字幕在线视频 | 视频在线中文字幕 | 国产精品18久久久久久久 | 91成人影库 | 成人午夜天堂 | 日产精品一区二区三区在线观看 | 久久久久久久国产a∨ | 全黄裸片武则天艳史 | 视频www| 久久久久国 | 成人免费视频视频在线观看 免费 | 关键词 | 一级免费观看 | 香蕉国产片 | 国产一级一国产一级毛片 | 视频一区二区在线播放 | h视频免费观看 | 嫩草影院在线观看网站成人 | 97伦理| 国产精品免费久久久久久 | 男女一边摸一边做羞羞视频免费 |