我試圖通過使用kryo
庫來獲得更好的對象序列化性能。java kryo 3.0.3低對象的序列化速度
我隔壁班的
public class CustomClass {
private String name;
private int[] array;
public CustomClass(String name, int size){
this.name = name;
fillArray(size);
}
private CustomClass(){ }
private void fillArray(int size){
array = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++){
array[i] = random.nextInt();
}
}
}
我用這種方法serilizing它,注意我使用標準的Java的Serializable
使得單個實例
public void kryoWrite(Object object){
Kryo kryo = new Kryo();
Output output = null;
try {
output = new Output(new FileOutputStream("kryo.txt"));
kryo.writeObject(output, object);
} catch (IOException e){
e.printStackTrace();
} finally {
if (output != null) {
output.close();
}
}
}
的序列,但序列化同一對象界面工作得更快。 例如,當我通過1000000作爲第二參數構造函數kryo
序列化對象在188毫秒,當Serializable
序列化完全相同的對象在136毫秒。
所以我做錯了什麼(在我的歌裏,是一個dubstep,哈哈)?
EDIT
陣列的具有百萬大小,由這些方法生成和序列化serializaed適當
public static int[] getArray(int size){
int[] array = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++){
array[i] = random.nextInt();
}
return array;
}
public static void kryoWriteArray(int[] array) throws FileNotFoundException {
Kryo kryo = new Kryo();
Output output = new Output(new FileOutputStream("array.txt"));
output.writeInts(array);
output.close();
}
花費139毫秒。
您是否曾嘗試重複使用'Kryo'實例,而不是每次都創建一個新實例?你有沒有試過讓Kryo寫出整個數組而不是每個對象? –
@DarthAndroid我正在序列化一個CustomClass的實例,我試圖通過kryo寫int []數組,但是,再次,性能低 –
@DarthAndroid此實例包含字符串和大小爲1000000的整數的數組 –