Hallo zusammen,
ich habe viele (>100) .csv Dateien. Eine einzelne .csv Datei ist zwischen 10mb und 88mb groß und hat zwischen 300.000 und 2.330.000 Zeilen. Diese .csv Dateien habe ich ausgelesen und in ein Java Objekt gepackt.
Das "date" parse ich mit einem SimpleDateFormat. "bid" und "ask" kann ich direkt aus der .csv Datei auslesen. "middle" errechnet sich aus "bid" und "ask" (("bid" + "ask") / 2).
Dann hat mein Objekt noch einen simplen getter für jedes Feld.
Dieses Objekt speichere ich dann auf meine Festplatte ab.
Das abgespeicherte File hat dann eine Größe zwischen 18Mb und 400mb. Hat sich von der Größe her also vervierfacht!
Wenn ich das File dann wieder lade über:
Dauert das Laden der java objekte bei einem 210mb java file (47mb csv) 110 Sekunden.
Wie kann ich das beschleunigen? Hat da jemand einen Tipp?
Vielen Dank!!
ich habe viele (>100) .csv Dateien. Eine einzelne .csv Datei ist zwischen 10mb und 88mb groß und hat zwischen 300.000 und 2.330.000 Zeilen. Diese .csv Dateien habe ich ausgelesen und in ein Java Objekt gepackt.
Code:
private final Date date;
private final BigDecimal bid;
private final BigDecimal ask;
private final BigDecimal middle;
Das "date" parse ich mit einem SimpleDateFormat. "bid" und "ask" kann ich direkt aus der .csv Datei auslesen. "middle" errechnet sich aus "bid" und "ask" (("bid" + "ask") / 2).
Dann hat mein Objekt noch einen simplen getter für jedes Feld.
Dieses Objekt speichere ich dann auf meine Festplatte ab.
Code:
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new FileOutputStream(filename));
} catch (IOException e) {
e.printStackTrace();
}
for (CandleStickTick candleStick : listCandleStick) {
try {
out.writeObject(candleStick);
} catch (IOException e) {
e.printStackTrace();
}
}
Wenn ich das File dann wieder lade über:
Code:
List<CandleStickTick> result = new BigList<>();
File file = new File(filename);
try {
if (file.exists()) {
System.out.println("Load: "
+ filename);
ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename));
try {
CandleStickTick candleStick = null;
while ((candleStick = (CandleStickTick) in.readObject()) != null) {
result.add(candleStick);
}
} catch (EOFException e) {
}
finally {
in.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
Dauert das Laden der java objekte bei einem 210mb java file (47mb csv) 110 Sekunden.
Wie kann ich das beschleunigen? Hat da jemand einen Tipp?
Vielen Dank!!