国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 午夜精品在线 | 1区2区视频| 欧美狠狠操 | 亚洲国产精品免费在线观看 | 亚洲午夜激情 | 羞羞网站 | 免费一区二区三区 | 国产精品区二区三区日本 | 欧美日韩一区二区三区不卡视频 | 高清视频一区 | 亚洲国产精品久久久久秋霞蜜臀 | 在线观看av网站 | www国产精品| 成人免费av电影 | 国产一区二区免费 | 成人av免费在线播放 | 成人高h视频 | 日韩视频在线免费观看 | 欧美一区二区三区视频 | 中文字幕一区二区三区不卡 | 一级毛片免费高清 | 日韩精品一区二区三区在线播放 | 中文字幕亚洲一区二区三区 | 久久精品一区二区国产 | 欧美大片免费观看 | 日日干夜夜干 | 一本大道久久a久久精二百 在线a人片免费观看视频 | 亚洲综合色自拍一区 | 视频一区二区三区在线观看 | 日韩视频专区 | 特一级黄色片 | 99热精品在线 | 日本在线视频一区二区三区 | 91av国产精品 | 国产精品国产三级国产aⅴ原创 | 最近中文字幕mv免费高清在线 | 黄色av一级片 | 在线观看成人 | 国产精品不卡一区二区三区 | 国产精一区| 九九人人|