Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1158 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Demande d'aide pour optimiser un bout de code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Demande d'aide pour optimiser un bout de code

n°1830873
John Difoo​l
Détective privé de classe R
Posté le 23-12-2008 à 15:10:39  profilanswer
 

Bonjour,
 
Voici le code en question :

Code :
  1. private String getResponseContent(java.net.HttpURLConnection openHttpConnection) throws IOException {
  2.         // Lire le flux HTTP
  3.         InputStream inputStream = openHttpConnection.getInputStream();
  4.         List<Byte> content = new ArrayList<Byte>();
  5.         byte data = (byte)inputStream.read();
  6.         while (data != -1) {
  7.             content.add(data);
  8.             data = (byte)inputStream.read();
  9.         }
  10.        
  11.         // Renvoyer le contenu après conversion en chaine de caractères  
  12.         byte[] test = new byte[content.size()];
  13.         Iterator<Byte> iterContent = content.iterator();
  14.         int index = 0;
  15.         while(iterContent.hasNext()) {
  16.             test[index++] = iterContent.next();
  17.         }       
  18. }


Le but est de renvoyer le flux sous forme de chaine de caractères.
Cette méthode fonctionne mais elle me parait "sale" et pas du tout optimisée.  
 
Comme je n'y connais pas grand chose dans ce domaine, je compte sur votre aide.
Merci d'avance.


---------------
Aussi haut qu'on monte, on finit toujours par des cendres
mood
Publicité
Posté le 23-12-2008 à 15:10:39  profilanswer
 

n°1830935
Taz
bisounours-codeur
Posté le 23-12-2008 à 17:14:09  profilanswer
 

construis un BufferedInputStream dessus, et lis à grand coup de bytes.

n°1830963
olivthill
Posté le 23-12-2008 à 18:14:45  profilanswer
 

Souvent, on utilise uuencode et uudecode pour faire cela.

n°1831877
John Difoo​l
Détective privé de classe R
Posté le 28-12-2008 à 00:01:42  profilanswer
 

merci, je modifierai çà après les vacances ;)


---------------
Aussi haut qu'on monte, on finit toujours par des cendres
n°1831918
pop-pan
yay!
Posté le 28-12-2008 à 14:15:21  profilanswer
 

InputStreamReader fait la conversion byte => char avec le support d'un charset
tu rajoutes un BufferedReader pour accelerer les traitements.
tu effectues des append dans un stringbuffer car c'est le plus efficace pour les concats (je te laisse chercher pourquoi)
 
 

Code :
  1. String          sIn         = "";
  2. StringBuffer    sbIn        = new StringBuffer();
  3. BufferedReader  brIn        = new BufferedReader(new InputStreamReader(openHttpConnection.getInputStream()),"TON CHARSET" );
  4. while ((sIn = brIn.readLine()) != null){
  5.     sbIn.append(sIn);
  6. }
  7. brIn.close();
  8. return sbIn.toString();


tu peux faire des tests de perfs, tu va vite voir une différence entre ton impl et celle ci.
a toi de decouvrir ou lever ou lancer les exceptions.


Message édité par pop-pan le 28-12-2008 à 14:27:07

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Demande d'aide pour optimiser un bout de code

 

Sujets relatifs
[Résolu] [VB.NET] Récupérer le code de sortie d'un service WindowsModification de code PHP pour ajouter une condition
aide pour un dmaide algo sur les matrices
Besoin d'aide sur les Trackbacks (rétroliens)aide algo sur les matrices
EXCEl : Condition SI ==> Regroupez des pays selon un Codeaide javascript pout lire un fichier texte
Aide pour une requête (MySQL)aide algorithmie pour un petit jeu
Plus de sujets relatifs à : Demande d'aide pour optimiser un bout de code


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR