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

Java Discussion :

[Strategie] Lecture depuis le réseau et écriture sur disque dur


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut [Strategie] Lecture depuis le réseau et écriture sur disque dur
    Bonjour à tout,

    Je travaille sur un programme de télechargement qui récupere des fichiers depuis internet; l'utilisateur peut choisir le nombre de parties du meme fichier à télecharger simultanement (ex de 1 à 10) en exploitant la propriété de HTTP1.1 de pouvoir lire une portion d'un fichier.
    Pour chaque partie un thread est creé avec un buffer de 1 ko pour lire les données; chaque fois que les données sont lues on les écrit dans l'emplacement approprié dans le fichier de destination dont la taille est ajustée au départ pour etre la meme de celle du fichier source. L'écriture se fait dans une methode synchronisée.

    De plus tous les threads de tous les telechargements partagent un fichier où sont ecrites des informations importantes pour pouvoir reprendre ulterieurement les télechargements incomplets (tel que l'url, le nombre de threads du telechargement, le nombre d'octets telechargés par chaque thread ..etc).
    j'ai la deux questions:
    1- Une taille de 1 ko pour le buffer de lecture est-elle bien choisie ?
    2- Est il pratique d'ecrire les données dès qu'elles sont lues ?. Avec un nombre important de télechargements dont chacun contenant plusieurs threads il y aura un nombre élevé d'accès au disque par seconde.

    J'espere que j'étais clair.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    Salut,

    Pour répondre à tes questions, voici ma vision des choses :

    1) Un buffer de 1Ko pour chacune de tes parties, c'est ça ? Si c'est le cas, ça me parait correct, tout dépend de la taille de la partie à télécharger, ce choix doit se faire à mon avis de manière dynamique, en prenant 1% de la taille d'une partie et 64Ko de buffer au maximum ( pour une très grosse partie ).

    Donc si ton fichier faire 10Mo, que tu as 10 parties de 1Mo chacune, tu peux mettre un buffer de 10Ko pour chacune. Ca fera 100Ko de mémoire buffer utilisée pour un fichier de 10Mo. ce qui dans l'ensemble parait raisonable.

    2) L'écriture directe du fichier sur le disque fonctionne bien pour cette utilisation : tu vas souvent télécharger moins vite que ton disque est capable d'écrire, donc ça peut aller. Par contre, si tu envisages d'être dans un environnement intranet un jour plutôt qu'internet, je pense qu'il faudrait en effet penser à employer également un buffer pour l'écriture.

    A+

  3. #3
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Citation Envoyé par KiLVaiDeN Voir le message
    Salut,

    Pour répondre à tes questions, voici ma vision des choses :

    1) Un buffer de 1Ko pour chacune de tes parties, c'est ça ? Si c'est le cas, ça me parait correct, tout dépend de la taille de la partie à télécharger, ce choix doit se faire à mon avis de manière dynamique, en prenant 1% de la taille d'une partie et 64Ko de buffer au maximum ( pour une très grosse partie ).
    Oui pour un fichier de grande taille il convient mieux de lire des rafales de 64Ko que de faire 64 interruptions (chacune pour lire 1 ko).

    2) L'écriture directe du fichier sur le disque fonctionne bien pour cette utilisation : tu vas souvent télécharger moins vite que ton disque est capable d'écrire, donc ça peut aller. Par contre, si tu envisages d'être dans un environnement intranet un jour plutôt qu'internet, je pense qu'il faudrait en effet penser à employer également un buffer pour l'écriture.
    Pour le moment le programme est prevu pour fonctionner sur internet mais pour un réseau intranet il convient egalement de recourir à d'autres solutions.

    Merci pour tes réponses.

Discussions similaires

  1. [2005] Lecture écriture sur disque
    Par big1 dans le forum Administration
    Réponses: 3
    Dernier message: 16/10/2014, 16h20
  2. [2.0.0.0] Import depuis un fichier eml sur disque dur
    Par Eusebius dans le forum Thunderbird
    Réponses: 1
    Dernier message: 22/05/2007, 10h54
  3. [UBUNTU] Droit d'écriture sur disque USB
    Par Moi.Meme dans le forum Ubuntu
    Réponses: 2
    Dernier message: 24/03/2007, 03h24
  4. W2003 + IIS : controle de l'écriture sur disque
    Par Pierrot-2007 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 19/02/2007, 09h23
  5. Récupération configuration réseau sur Disque dur HS.
    Par Jean-Michel dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/09/2006, 04h28

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