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

Bibliothèque standard C Discussion :

memcpy performances ?


Sujet :

Bibliothèque standard C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut memcpy performances ?
    En Googlant memcpy je suis tombé sur cet article Intel nommé memcpy performance.

    Intrigué, j'ai précisé ma recherche "memcpy performance". Sur le web je trouve quelques pages, avec des tests, des programmes, des discussions, des avis, mais pas d'élément de synthèse.


    Sur DVLP, je trouve :

    http://www.developpez.net/forums/d31...rithme-memcpy/ il y a finalement un template en c++ qui semble convenir, mais finalement pas de bilan (quel apport réel par rapport à memcpy)

    http://www.developpez.net/forums/d96...eviter-memcpy/ ou je retiens le "faisons confiance aux compilos", attitude que j'ai l'habitude de tenir, mais que je commence à mettre en doute petit à petit, et à remplacer par "apprend ce que fait vraiment ton compilo" (loin d'être évident).



    Et il y a quelques temps je tombe sur une options avancée de VLC qui demande de choisir le module de copie mémoire :
    - MMEXT
    - MMX
    - libc
    - 3D Now!
    (L'aide de VLC indique que le programme sait reconnaitre automatique le memcpy le plus rapide).




    Bref, plein de choses, mais je n'arrive pas à faire immédiatement de synthèse de tout cela. Est-ce qu'il existe des clefs synthétiques pour comprendre cette problématique ? Ou simplement quelqu'un peut-il les énoncer ici ?

  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,

    Citation Envoyé par Jérôme_C Voir le message
    Bref, plein de choses, mais je n'arrive pas à faire immédiatement de synthèse de tout cela. Est-ce qu'il existe des clefs synthétiques pour comprendre cette problématique ? Ou simplement quelqu'un peut-il les énoncer ici ?
    Je ne comprends pas bien ton probleme : est-ce que tu cherches a savoir dans quel cas il vaut mieux utiliser memcpy, et dans quel cas le recoder ? Ou bien comment est compile memcpy par gcc ? Ou par un autre compilateur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    C'est surtout le côté pratique qui m'intéresse, savoir s'il faut seulement optimiser son utilisation, car memcpy, voyons, c'est la bibliothèque standard, le meilleur algorithme est choisi en fonction du cas d'utilisation ; ou bien, il existe des cas bien précis où l'optimisation de cette fonction standard / son recodage est nécessaire. (Et donc, la bibliothèque standard ne fonctionne que dans les cas standard ?)


    Le sujet se veut d'abord plutôt axé C sans forcément utiliser une implémentation particulière, car a priori, je ne me doutais pas qu'un memcpy pourrait être aussi différent selon les compilateurs. Mais si le compilateur a vraiment son importance, je peux travailler autant avec MVS que gcc, mais si l'utilisation d'un compilateur a une conséquence, sur architecture x86 (32 bits / 64 bits).

  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
    Ok, je vois un peu mieux.

    Mettons que dans un programme standard, si tu en es a te demander s'il faut optimiser memcpy, c'est que tu as optimise tout le reste du code (profiling et tout le toutim), et qu'il ne te reste plus que ca a gratter pour esperer tenir les performances.

    Autre cas : un programme qui passe son temps a faire de la copie. Dans ce cas, il s'agit d'un cas particulier, qui ne doit pas etre traite comme le reste des programmes. Et tu t'interesseras plus aux defauts de cache (L1 ou L2) qu'aux fonctions d'acces memoire qui, de toute facon, sont comparativement lentes.
    Le fait de re-ecrire ton algo pour qu'il manipule principalement des donnees en cache sera probablement plus interessant que te pencher sur l'implementation de la lib C sur ta ou tes machines cibles.

Discussions similaires

  1. Performance d'un memcpy
    Par Khan34 dans le forum C++
    Réponses: 8
    Dernier message: 24/03/2013, 18h58
  2. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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