[JDBC] [CSV]Problème de performance import fichiers CSV
Bonjour,
Je travaille sous eclipse 3.1 et j'effectue un traitement java qui consiste à lire des fichiers CSV. Il y en aune vingtaine, dont certains qui pèsent 30Mo.
Au début du traitement, j'importe ces fichiers de façon à pouvoir les manipuler ensuite. A l'exécution, rien que cet import, avant même le moindre traitement dure plus de trois heures !!!
Je ne crois pas que ce soit normal, voici le code que j'utilise pour importer ces fichiers :
Code:
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
| public ImportCsv(String path) throws FileNotFoundException {
m_fileContent = new Vector();
FileReader fileReader = new FileReader(path);
readFromFile(fileReader);
fitVectorsToSize();
}
public ImportCsv(Reader reader) {
m_fileContent = new Vector();
readFromFile(reader);
fitVectorsToSize();
}
private void fitVectorsToSize() {
m_fileContent.setSize(getRowsCount());
int fileSize = getRowsCount();
int colCount = getColsCount();
for (int i = 0; i < fileSize; i++) {
Vector aRow = (Vector)m_fileContent.get(i);
if (aRow == null) {
m_fileContent.set(i, new Vector());
aRow = (Vector)m_fileContent.get(i);
}
aRow.setSize(colCount);
}
}
private void readFromFile(Reader reader) {
BufferedReader buffReader = new BufferedReader(reader);
if (buffReader != null) {
try {
String tempLine;
tempLine = buffReader.readLine();
while (tempLine != null) {
readFromLine(tempLine);
tempLine = buffReader.readLine();
}
} catch (IOException e) {
System.err.println("Error reading CSV file: " + e.toString());
} finally {
try {
buffReader.close();
} catch (IOException e) {
System.err.println(
"Erreur closing CSV file: "
+ e.toString()
);
}
}
}
System.runFinalization();
System.gc();
} |
Avez vous des idées pour rendre ce code plus performant ?
Cette durée d'éxécution est elle normale ??!
Merci.
[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java
Re: Problème de performance import fichiers CSV
Salut,
Citation:
Envoyé par PamelaGeek
Avez vous des idées pour rendre ce code plus performant ?
Déjà je ne vois pas la fermeture de ton FileReader dans la méthode ImportCsv...
Puis il semblerais que tu as une méthode readFromLine(String). Mais que fais tu à l'intérieur de cette dernière ???
Enfin je ne comprend pas trop le but de la méthode fitVectorsToSize()...
De plus tu semble en créer un grand nombre... Il faudrait surement lui préférer ArrayList qui n'est pas synchronisé...
Citation:
Envoyé par PamelaGeek
Cette durée d'éxécution est elle normale ??!
Non.
As-tu déterminé quelle est la méthode qui prend le plus de temps ?
a++
PS : j'ai rajouté les balises [code] dans ton message, penses-y la prochaine fois ;)