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

C++ Discussion :

Copie de blocs mémoires


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Copie de blocs mémoires
    Bonjour,

    Je suis en train de m'amuser à développer une interface graphique, sans utliser de bibliothèques du types OpenGL ou DirectX...
    Je construit donc des images qui sont en fait des suites de pixels codés sur 32 bits. Il faut donc que j'optimise mes fonctions de base de rendu, en particulier "remplir un rectangle d'une couleur donnée"... pour cela ma méthode est d'aller faire du memcpy sur chaque pixel de la première ligne, puis de faire du memcpy de ligne à ligne.

    J'aimerais savoir comment vous feriez pour optimiser ces copies brutes. Par exemple, j'ai vu qu'il y avait memset qui pourrait être utilie, mais il me semble que ça ne peut définir une copie de mémoir que d'un octet... l'idéal serait de pouvoir faire du memset en copiant des blocs de 4 octets.

    Connaissez-vous qque chose de ce type ?

    Merci.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Dmnbp7ip Voir le message
    Bonjour,

    Je suis en train de m'amuser à développer une interface graphique, sans utliser de bibliothèques du types OpenGL ou DirectX...
    Je construit donc des images qui sont en fait des suites de pixels codés sur 32 bits. Il faut donc que j'optimise mes fonctions de base de rendu, en particulier "remplir un rectangle d'une couleur donnée"... pour cela ma méthode est d'aller faire du memcpy sur chaque pixel de la première ligne, puis de faire du memcpy de ligne à ligne.

    J'aimerais savoir comment vous feriez pour optimiser ces copies brutes. Par exemple, j'ai vu qu'il y avait memset qui pourrait être utilie, mais il me semble que ça ne peut définir une copie de mémoir que d'un octet... l'idéal serait de pouvoir faire du memset en copiant des blocs de 4 octets.

    Connaissez-vous qque chose de ce type ?

    Merci.
    Bonjour,
    tu peut le faire avec std::fill ou std::fill_n
    http://r0d.developpez.com/articles/algos-stl/#LII-B-5

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    J'aimerais savoir comment vous feriez pour optimiser ces copies brutes.
    Si memcpy n'est pas assez rapide tu peux faire des trucs pour aller plus vite. En particulier si ta mémoire est alignée sur 16 octets tu peux utiliser sur x86 les instructions SIMD.
    Bien entendu ça irait plus vite si memcpy est inliné, aussi.
    Mais si ça se trouve ton compilateur est suffisamment malin pour générer le meilleur code possible.
    Boost ftw

Discussions similaires

  1. Copie de bloc de mémoire (avec Boost ?) ?
    Par oodini dans le forum C++
    Réponses: 7
    Dernier message: 13/02/2009, 15h26
  2. Bloc mémoire maximum allouable avec new
    Par uriotcea dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/02/2007, 18h50
  3. Copier une bloc mémoire dans un CDC
    Par kinhelios dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2007, 09h17
  4. Réponses: 2
    Dernier message: 19/02/2007, 15h46
  5. Partage de blocs mémoire entre 2 processus
    Par rolkA dans le forum Windows
    Réponses: 6
    Dernier message: 18/11/2003, 19h08

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