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 :

Optimisation allocation mémoire ?


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut Optimisation allocation mémoire ?
    Bonjour,

    Je viens de reprendre un projet et je suis tombé sur le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int[] readBuffer = new int[100];
    int len = 0;        
    // we read each byte of the stream
    while (this.inputStream.available() > 0 && (readBuffer[len] = this.inputStream.read()) != -1) 
    {
         len++;
    }
    Il y a t'il une raison particulière de préciser en dure (100 plutôt que this.inputStream.available()) la taille du tableau ?
    Surtout que dans la plupart des cas, il ne sera rempli que d'une 30aine d'éléments.
    Pour info, l'InputStream est celui d'un socket.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 578
    Par défaut
    Déjà, ce n'est pas comme ça qu'on lit un InputStream, mais plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int nbRead = 0;
    int thisRead = this.inputStream.read(readBuffer);
    while(thisRead > 0) {
      nbRead += thisRead;
      thisRead = this.inputStream.read(readBuffer, nbRead, readBuffer.length - nbRead);
    }
    Ensuite pour répondre à ta question :

    - available() ne sert à rien, et notamment pas à estimer la taille de tableau qui serait utile.
    Il n'y a aucune raison, jamais, d'appeler available(). Créer cette méthode était une idée sans intérêt. Elle n'est là que pour compatibilité et elle n'est pas deprecated parce qu'elle n'est pas nuisible.

    - Il reste donc à estimer la taille nécessaire du buffer d'une façon ou d'une autre. Pourquoi 100 ? Pourquoi pas.
    Si la taille des données est plutôt de l'ordre de la trentaine d'octets, peut-être qu'un tableau de 50 suffirait. Ou peut-être pas. Il faut faire en fonction de ton cas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 11
    Dernier message: 21/08/2012, 16h57
  2. Réponses: 10
    Dernier message: 07/05/2009, 19h35
  3. Réponses: 6
    Dernier message: 23/02/2007, 21h20
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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