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

Langage Java Discussion :

Sérialisation et performances


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Par défaut Sérialisation et performances
    Bonjour à tous,

    Je me suis documenté ces derniers jours sur le mécanisme de sérialisation. Il paraît incontestablement formidable sur le plan du service rendu au développeur. J'envisage donc de l'utiliser pour sauvegarder ma structure de données sur le disque. Mais je me pose encore quelques questions relatives aux pertes de performances de ce mécanisme par rapport à un mécanisme plus "manuel" et classique comme on pourrait le coder en C++ par exemple.

    Par performances, j'entends particulièrement temps d'exécution et encombrement du fichier sur le disque. J'ai trouvé une info sur le net précisant que sur un cas test, la sérialisation pouvait être environ 2 fois plus lente qu'un mécanisme classique mais je n'ai rien lu sur le rendement en terme de taille de fichier créé. J'imagine qu'il doit bien y avoir un certain prix à payer en contrepartie de la simplicité de codage...

    Je serais ravi de lire les appréciations de ceux d'entre vous qui ont eu l'occasion d'évaluer les performances de la sérialisation.

    Merci !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    La serialisation prend effectivement en pratique plus de place

    Quand tu utilises la serialisation, par défaut, tu enregistres presque tous les attributs de ta classe, même ceux qui n'ont pas besoin d'être enregistrés. L'effort consiste à supprimer ce que tu ne veux pas enregistrer. Et si tu utilises une classe que tu n'as pas définie toi meme, tu vas peut être enregistrer des informations qui ne t'interesse pas.

    Quand tu fais un enregistrement manuel, l'effort consiste à choisir ce que tu veux enregistrer, et comment tu vas le faire. Tu vas donc chercher à ne prendre que le strict necessaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Par défaut
    As-tu eu l'occasion de faire un comparatif chiffré entre les deux méthodes ?

    Si on fait abstraction des champs inutile d'une classe de base qu'on ne maîtrise pas, sais-tu ce que coûte réellement la sérialisation d'un champ par rapport à une bête sauvegarde à la manière de grand-maman ? J'imagine que des infos telles que le nom du champ doivent être sauvées mais y a-t-il autre chose ?

    Merci pour ton avis !

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je pratique beaucoup la sérialisation, mais je ne suis jamais allé la comparer à d'autres méthodes, particulièrement celles de grand-maman.

    Je la trouve très pratique, à condition de faire un fichier = un objet. Ce qui impose une gestion de fichiers. Je pense que d'autres formes ne sont pas très pratiques, parce que de toutes façons le flux de relecture doit relire tout le fichier. La gestion de fichiers n'est pas une lourde charge, à condition de maitriser la classe File ce qui, on l'admettra, est à la portée du premier venu.

    Il FAUT placer le serialVersionUID, sinon c'est la panique assurée au bout de 2 jours.

    Question optimisation vitesse, un cache d'objet fait éventuellement l'affaire.

    Que veux-tu savoir d'autre ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Par défaut
    Je ne suis pas sûr de comprendre ce que tu entends par un fichier = un objet. Dans mon cas, mon appli contient un projet avec sa structure de donnée. L'ensemble devra se sauver sous la forme d'un fichier par projet. Donc pour un objet projet, il y aura un fichier, si c'est cela que tu voulais dire.

    Sinon, merci pour vos avis . Je pense me tourner vers la sérialisation qui me paraît vraiment séduisante. Et même si il faut claquer un peu plus d'espace disque, je mise sur le fait que ça reste raisonnable.

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    En ce qui concerne les attributs n'ayant pas besoin d'être sérialisés, le mot clé transient est là pour ça .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par dabeuliou
    Mais je me pose encore quelques questions relatives aux pertes de performances de ce mécanisme par rapport à un mécanisme plus "manuel" et classique comme on pourrait le coder en C++ par exemple.
    C'est vraiment une question à se poser de nos jours.

    C'était peut-être vrai au début de Java, mais on est à la version 6.

    A+

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  2. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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