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 :

Question liée à memset


Sujet :

C++

  1. #21
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par loufoque
    Pourtant, c'est le cas.
    Pourquoi ça ne le saurait pas ?

    ben a premier vu, parcourir un tableau directement et plus rapide que de le parcourir par des fonctions (cas du std::vector). Aprés je peut me trompé, mais meme les iterator sont pas de vrai "pointeur" (accés plus lent) et je n'ai jamais vu, pour du traitement d'image, une seule lib qui utilise le std::vector pour son buffer. Ou meme pour des partie les plus optimisé d'un code. Donc pour moi, les vector encapsule un tableau, il est donc plus lent du a l'accés par des fonctions. Par contre il est plus securisé.

  2. #22
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tout peut être correctement inliné (même les opérations sur les itérateurs), donc cela revient strictement aux mêmes opérations que tu aurais faites sur ton tableau brut. Donc tu peux t'attendre à n'avoir aucune perte de performance après une compilation optimisée.

  3. #23
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par Laurent Gomila
    Tout peut être correctement inliné (même les opérations sur les itérateurs), donc cela revient strictement aux mêmes opérations que tu aurais faites sur ton tableau brut. Donc tu peux t'attendre à n'avoir aucune perte de performance après une compilation optimisée.
    voici le code de l'operateur [] pour le vector de VC8

    reference operator[](size_type _Pos)
    { // subscript mutable sequence
    _SCL_SECURE_VALIDATE_RANGE(_Pos < size());
    return (*(_Myfirst + _Pos));
    }

    comme il y as "_SCL_SECURE_VALIDATE_RANGE(_Pos < size());" a chaque appel (inline ou non)
    Pour moi c'est plus lent mais plus securisé.

  4. #24
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Mongaulois
    comme il y as "_SCL_SECURE_VALIDATE_RANGE(_Pos < size());" a chaque appel (inline ou non) Pour moi c'est plus lent mais plus securisé.
    Regarde un peu comment c'est defini.

  5. #25
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Regarde un peu comment c'est defini.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define _SCL_SECURE_VALIDATE_RANGE(cond)				\
    	{													\
    		if (!(cond))									\
    		{												\
    			_ASSERTE((#cond, 0));						\
    			_SCL_SECURE_OUT_OF_RANGE_NO_ASSERT;			\
    		}												\
    		__analysis_assume(cond);						\
    	}
    il y as bien au moin test

  6. #26
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu n'es pas remonté suffisamment loin. Cette macro ne fait quelque chose que si la macro _SECURE_SCL est définie à 1. Tu peux donc n'activer ces tests supplémentaires que lorsque tu le souhaites (genre en mode debug). Dans le cas contraire le code ne comportera aucune instruction superflue.

  7. #27
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    a ok.
    j'ai rien dit.
    merci (enfin une reponse claire)

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    petit détail mais qui accelerera un peu tes boucles "for" : utilise "++i" plutot que "i++". Pourquoi ?
    car l'operateur de post incrementation realise plus d'operations que l'operateur de pre incrementation et utilise une variable temporaire. Voici leur implementation :
    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
     
    class X
    {
    public:
        X & operator++(void) // pré incrémentation
        {
             *this+=increment;
             return *this;
        }
        const X operator++(int) // post incrémentation
        {
              const X temp=const_cast<const X>(*this); // copie de l’objet dans son état actuel
              operator++(); // pre incrementation
              return temp;
        }
    };

  9. #29
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca ne fera quand même aucune différence sur les types primitifs.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [1.x] Questions liées au getRelatedModelName()
    Par Gauldo dans le forum Symfony
    Réponses: 7
    Dernier message: 01/02/2010, 15h01
  2. [WAMP] Questions liées au réseau
    Par steeve93800 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 08/02/2008, 12h33
  3. [Htaccess] Petites questions liées à la sécurité
    Par jeanphi6 dans le forum Apache
    Réponses: 4
    Dernier message: 21/11/2007, 08h50
  4. Petite question liée aux structures
    Par progfou dans le forum C++
    Réponses: 9
    Dernier message: 24/04/2007, 13h46
  5. Petite question liée au Javascript
    Par systemofaxav dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2006, 14h29

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