Ich versuche, bessere Leistung der Serialisierung des Gegenstandes unter Verwendung kryo
der Bibliothek zu erhalten.java kryo 3.0.3 niedrige Serialisierungsgeschwindigkeit des Objekts
Ich habe die nächste Klasse
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();
}
}
}
ich es mit dieser Methode bin serilizing stelle ich die Serialisierung von einzelnen Instanz mache
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();
}
}
}
aber das gleiche Objekt mit Standard-Java Serialisierung Serializable
Schnittstelle funktioniert schneller. Wenn beispielsweise I geben 1000000 als zweites param kryo
Serialisieren Objekt in 188 ms, zur Konstrukteurs wenn Serializable
in 136 ms genau das gleiche Objekt serialisiert.
Also was mache ich falsch (ist es ein Dubstep in meinem Lied, lol)?
EDIT
Serialisierung von Arrays mit einer Größe von 1000000, erstellt und serializaed durch diese Methoden in geeigneter Weise
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();
}
dauert 139 ms.
Haben Sie versucht, die 'Kryo'-Instanz erneut zu verwenden, anstatt jedes Mal eine neue zu erstellen? Hast du versucht, Kryo zu sagen, dass er das gesamte Array anstatt jedes Objekts schreiben soll? –
@DarthAndroid Ich bin eine Instanz von CustomClass serialisieren, ich versuchte, Int [] Array von Kryo zu schreiben, aber wiederum ist die Leistung niedrig –
@DarthAndroid diese Instanz enthält String und Array von Ints mit der Größe von 1000000 –