IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Parser XML / SAX vs Serialisation


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut Parser XML / SAX vs Serialisation
    Bonjour,

    J'ai besoin de faire du easy load sur des données, je m'explique :
    j'aimerai charger à partir d'un fichier les informations minimales à connaitre sur des données, dans le cas ou ces données sont manipulées je charge alors entierement à partir d'un fichier également.

    J'ai plusieurs attributs dans ma classe dont un qui peut prendre une place certaine, de type Object[][], pouvant contenir des String ou float/int. C'est biensur cet attribut que j'aimerai ne pas charger à chaque fois.

    Dans un premier temps, j'ai utilisé un parser XML SAX pour faire mon chargement minimal et mon chargement total.
    Cela marche trés bien mais j'aimerai diminuer le temps necessaire au chargement de mon attribut consommateur d'espace.

    C'est pourquoi dans un deuxième temps, je me suis dit que la serialisation pouvait peut-etre être plus performante, plus rapide, par conséquent au lieu d'utiliser mon parser SAX,
    Dans ma méthode de chargement totale à partir de mon fichier j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             FileInputStream fis = new FileInputStream(this.getSource()+"_bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            // mon attribut en question de type Object[][]
            this.values = (Object[][])ois.readObject();
            ois.close();
    La même chose pour ma fonction de sauvegarde (Car il est possible que mon object change) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
             FileOutputStream fos = new FileOutputStream(this.getSource()+"_bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(this.values);
            oos.flush();
            oos.close();
            // je vide mon attribut pour liberer memoire
            this.values = null;
            System.gc();
    Ces deux méthodes fonctionnent, mais à mon étonnement la deuxième est plus longue que la premiere, à savoir le perser XMl est plus rapide, est ce qu'il est possible d'améliorer ma deuxième méthode?

    Exemple de temps d'execution observé (1Go pour la JVM):

    nbreLignesDeLaMatrice,nbreColonnesDeLaMatrice,temps(chargement_Xml),tailleFichierXML(Octets),temps(Loading_Serialisation_matrice),tailleFichierBinSerialise
    3500,200,4736,20348881,6097,9123703
    5000,200,6519,29067616,8722,13031938
    50000,100,32921,145763532,43660,65412853
    10000,1000,66046,289996053,86680,129925373

    Merci d'avance pour vos reponse.

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut
    Je viens de trouver pourquoi dans ce cas la serialisation prend plus de temps, le problème n'est pas du à la serialisation, mais au type des données que je chargeais.

    C'est un type primitif, j'ai donc remplacé par :

    Dans le cas de ma plus grosse matrice, le temps de chargement du binaire prend 0.533 sec (Impressionnant!! ), je gagne aussi au niveau du XML cela met maintenant 58sec.

    Je voulais que mes données soient trés générique... Mais vu le temps que cela prend à charger, le choix du compromis est vite fait!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parser XML SAX avec image
    Par anto2b dans le forum Android
    Réponses: 2
    Dernier message: 15/12/2011, 09h55
  2. parser un fichier xml avec xml.sax et la méthode "feed"
    Par louisonb dans le forum Général Python
    Réponses: 1
    Dernier message: 06/04/2009, 11h41
  3. [SAX] Parser XML SAX et encodage
    Par couetbis dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 08/04/2008, 14h49
  4. [XML] [SAX] Parser XML compatible PHP 4 et PHP 5
    Par nako dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/04/2006, 11h14
  5. [XML] [SAX] Parser Xml Universel
    Par sk8world dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 15/11/2005, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo