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

Entrée/Sortie Java Discussion :

comparaison nio et io : sauvegarde d'une chaîne


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut comparaison nio et io : sauvegarde d'une chaîne
    En lisant ça, http://www.cs.brown.edu/courses/cs16.../j-nio-ltr.pdf , j'avais cru comprendre que les entrées sorties nio était plus performentes que les entrées sorties io.

    J'ai fais des tests (enfin je pense) et je trouve systématiquement io deux fois plus rapide que nio.

    Est-ce que j'utilise mal nio, n'est-ce pas si rapide ?

    Voici les deux codes :

    IO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void print(String S, String filename, boolean append) {
    		try {
    			PrintWriter writer = new PrintWriter(new FileOutputStream(filename,
    					append));
    			writer.println(S);
    			writer.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
     
    	}

    NIO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public static void printNIO(String S, String filename, boolean append) {
     
     
    		int transfBytes = 0;
    		boolean nend = true;
     
    		byte[] T = S.getBytes();
    		int bufSize = Math.max(T.length, 32768);
     
    		try {
     
     
    			FileOutputStream fout = new FileOutputStream(filename, append);
    			FileChannel fc = fout.getChannel();
     
    			ByteBuffer buffer = ByteBuffer.allocate(bufSize);
     
    			do{
     
    				if(transfBytes+buffer.capacity() < T.length){
     
    					buffer.put(T,transfBytes,buffer.capacity());
    					transfBytes=transfBytes+buffer.capacity();
    				}
    				else{
     
    					buffer.put(T,transfBytes,T.length-transfBytes);
    					nend = false;
    				}
     
    				buffer.flip();
    				fc.write(buffer);
    				buffer.clear();
    			}while(nend);
     
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
     
    			e.printStackTrace();
    			System.exit(-1);
    		}
    	}

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    NIO est plus performant... lorsque on traite de gros flux de donnée.
    Si tu manipules de simple fichier texte alors IO sera généralement plus rapide.

    a++

  3. #3
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Et si le fichier de données fait moins de Integer.MAX_INT octets (2Go actuellement), penser à utiliser le mapping mémoire de nio via la méthode "map" de FileChannel

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. [PHP-JS] Comparaison un URL avec une chaîne de caractères
    Par moustique95 dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2008, 10h05
  3. Comparaison d'une chaîne caractère
    Par schtroumpf_farceur dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 19h25
  4. [Débutant] Comment sauvegarder une chaîne ?
    Par nmqm dans le forum Assembleur
    Réponses: 1
    Dernier message: 28/02/2006, 23h49
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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