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

Linux Discussion :

Performance : read/write dans un fichier ou dans un descripteur de fichier


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut Performance : read/write dans un fichier ou dans un descripteur de fichier
    Bonjour,

    je reçois un flux vidéo (d'une API) à afficher sur un écran. Je voudrais savoir si les gains de performance sont significatifs (s'il y en a) entre les solutions suivantes :

    - Écrire le flux dans un fichier, et le lire pour l'afficher, (avec fread et fwrite en C),

    - Écrire le flux dans un descripteur de fichier en C, et le lire ce même descripteur de fichier pour l'afficher graphiquement.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Quelle difference fais-tu entre le fichier et le descripteur de fichier ?
    A partir de quelle difference preferes-tu une solution a l'autre ?
    Est-ce que tu peux faire des tests ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Un fichier est stocké sur le disque dur, donc un accès (ouverture/fermeture/lecture/écriture) vers celui-ci est coûteux puisque c'est la mémoire la moins rapide.

    Un descripteur de fichier est une référence abstraite vers une entrée ou une sortie de données. Et ce mot abstrait, je ne sais pas trop ce qu'il signifie.

    Je me demande si l'accès à cette référence abstraite n'est pas moins coûteuse que l'accès à un fichier situé sur le disque dur. J'imagine que la performance ne peut être que supérieur ou égale. mais dans le cas ou elle est égale, il serait inutile de la réaliser.

    Je ne peux pas tester puisque je ne dispose pas du matériel adéquate pour l'instant. Je réfléchie juste à la façon dont je vais procéder par la suite.

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    En C, un descripteur de fichier est tout simplement un identifiant vers un fichier que tu manipules. D'ou ma question, car cela reste un fichier.

    Ecrire sur disque pour relire immediatement, si tu n'as pas besoin de stocker le fichier, c'est effectivement inutile. Par contre, si tu as besoin de stocker le fichier, ca reste la solution la plus simple.

    Sans stockage, tu peux regarder du cote d'un segment de memoire partagee, a condition que tu n'aies pas une trop longue sequence a memoriser (quelques mega au mieux en memoire partagee).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    En faite mon idée était d'imiter le fonctionnement des pipes existant dans les shell. Cette technique s'apparente donc en faite à utiliser un fichier ? Sinon, il y a peut être la solution par socket.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Tu dis lire le flux via une API. Pourquoi dans ce cas vouloir l'enregistrer pour ensuite l'afficher ? Pourquoi ne pas l'afficher directement ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Parce que pour l'afficher, je dois le transmettre à une couche Java.

    En faite, cette API est en C, et est Wrappée en Java avec JNI. L'équipe de développement avait choisi de ne pas retourner un char * énorme à la couche Java dans un soucis de performance. Ils sont donc passés par un fichier.

    J'étudie qu'elles peuvent être les autres possibilités.

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Aie.

    Les performances de JNI sont, globalement, desastreuses. Dans la mesure du possible, je te conseille de t'en passer autant que possible.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Trop tard !
    Je ne pense pas qu'il soit possible de rester en C côté API et de faire une interface par l'intermédiaire de socket TCP C/Java. Le soucis est que l'architecture est orientée service, et le lancement de deux programmes simultanément ne colle pas avec la philosophie.

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/11/2012, 22h02
  2. Réponses: 6
    Dernier message: 14/06/2011, 19h39
  3. Réponses: 2
    Dernier message: 30/12/2010, 23h08
  4. appeler les fichiers .js dans le HEAD ou dans le BODY ?
    Par php_de_travers dans le forum jQuery
    Réponses: 2
    Dernier message: 01/03/2010, 09h37
  5. (Write #1, string) sans guillemets dans le fichier
    Par numfard dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/05/2007, 09h35

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