2011-04-17 4 views
1

J'ai besoin d'analyser des données 70mb avec Java et j'ai actuellement un document XML (1 niveau, pas d'enfants), où chaque document a plusieurs champs. Je me demandais si je devrais le remplacer par un fichier texte plus simple dans lequel chaque ligne est un doc, et les champs sont séparés par des virgules.Java: Question sur la représentation des données

Est-ce que cela va améliorer considérablement les performances? Et si j'avais, par exemple, des données de 4 Go à la place?

grâce

+1

Y a-t-il une raison pour laquelle vous avez choisi XML en premier lieu? –

+0

@Oli Charlesworth Pas vraiment. – user680406

+1

@user: Ensuite, s'il n'y a pas de raison impérieuse d'utiliser XML (par exemple, vous ne le générez pas avec les outils existants, et vous avez une bibliothèque de traitement CSV appropriée), alors ne l'utilisez pas. –

Répondre

0

Il serait probablement plus efficace d'utiliser le fichier texte que le fichier XML si jamais vous arrivez à un point où vous ne pouvez pas tenir l'ensemble des données en mémoire, à la fois. à ce stade, être capable d'analyser le fichier texte ligne par ligne serait mieux que l'approche XML (qui, je crois, charge le fichier entier en mémoire). Selon un fichier XML de Robin Green, le fichier entier est analysé en une seule fois si vous utilisez des flux d'analyse DOM-SAX.

Il existe d'autres façons de conserver des données comme ceci:
Database
ces données peut être représenté dans une base de données? Java supporte facilement la plupart des systèmes de bases de données, et il vous suffit d'installer les bonnes bibliothèques pour le faire.

Java Properties
Une alternative est le système de propriétés Java. Cela vous permet de mettre toutes vos données dans un fichier, puis de les recharger et Java analyse le fichier lors du chargement.

+1

Ce n'est pas correct - l'analyse XML ne lit le fichier entier qu'en une seule fois si vous utilisez l'analyse DOM-SAX. –

Questions connexes