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 :

[Optimisation]Est-ce possible ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�

    Inscrit en
    Juin 2004
    Messages
    1 397
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par d�faut [Optimisation]Est-ce possible ?
    Bonjour � tous !
    J'ai une fonction "inlin�e" qui est �norm�ment appel�e, et je pense qu'elle est optimisable, mais je ne vois pas bien comment...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    __inline
    const Int gClip( const Int iX )
    {
      const Int i2 = (iX & 0xFF);
      if( i2 == iX )  { return iX; }
      if( iX < 0 )    { return 0x00; }
      else            { return 0xFF; }
    }
    Je pense en particulier � virer les if() mais je n'y parviens pas.
    Si jamais �a peut vous aider, le code est destin� � un ARMv5.
    Merci d'avance !

  2. #2
    Membre �prouv� Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par d�faut
    deja tu peux enlever le dernier "else" qui ne sert a rien, apres je vois pas

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par d�faut
    Visiblement tu veux faire une saturation.

    2 pistes:

    -utiliser des instructions MMX/SSE2 qui savent faire �a automatiquement dans les calculs. Cette m�thode n'est cependant pas �vidente � mettre en oeuvre quand on n'a pas l'habitude du calcul vectoriel.

    -tu peux remplacer tes "if" par un min suivi d'un max. Mais plut�t que d'utiliser les min et max classiques (avec "if" ou "?:" qui doivent faire une fois sur deux un saut et donc cassent le pipeline du processeur), pr�f�re les fonctions "__min" et "__max" sous Visual (ou leur �quivalent pour d'autres compilos...)

  4. #4
    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
    Par d�faut
    Quand ta fonction est inlin�e le if devrait d�j� �tre enlev�...
    Regarde le code g�n�r� par ton compilateur.

  5. #5
    Membre �prouv�

    Inscrit en
    Juin 2004
    Messages
    1 397
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par d�faut
    Justement, le code est assez fouillis, mais il contient plusieurs cmp, je pense donc que les if ne sont pas trop enlev�s...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par d�faut
    Bonjour,
    perso je ne vois pas de moyen d'optimiser encore la fonction, sauf en la codant en asm...

  7. #7
    Membre exp�riment�
    Inscrit en
    D�cembre 2003
    Messages
    272
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2003
    Messages : 272
    Par d�faut
    Citation Envoy� par Charlemagne
    -tu peux remplacer tes "if" par un min suivi d'un max. Mais plut�t que d'utiliser les min et max classiques (avec "if" ou "?:" qui doivent faire une fois sur deux un saut et donc cassent le pipeline du processeur), pr�f�re les fonctions "__min" et "__max" sous Visual (ou leur �quivalent pour d'autres compilos...)
    En Visual C 2005, j'ai :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    #define __max(a,b)  (((a) > (b)) ? (a) : (b))
    #define __min(a,b)  (((a) < (b)) ? (a) : (b))
    :/

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par d�faut
    Tiens oui, t'as raison. Je me suis tromp�.
    J'�tais convaincu du contraire, que min/max �taient impl�ment�s diff�remment. J'avais pourtant eu (il me semble) des gains significatifs de vitesses gr�ce � __min/__max. Peut-�tre que dans certaines circonstances le compilo sait compiler l'op�rateur "?:" sans saut.

    J'en reviens � MMX ou SSE2 qui proposent des calculs satur�s, ainsi que des instructions min/max sans saut. C'est imbattable...

  9. #9
    Membre �prouv�

    Inscrit en
    Juin 2004
    Messages
    1 397
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par d�faut
    Le processeur est un ARM, que je connais assez mal.
    Comment �crire le min/max sans saut ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Est-il possible d'optimiser cette requ�te ?
    Par kraiggy dans le forum D�veloppement
    R�ponses: 6
    Dernier message: 20/03/2009, 15h49
  2. R�ponses: 61
    Dernier message: 01/08/2008, 22h56
  3. Est-il possible d'optimiser cette requ�te ?
    Par Katachana dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 25/06/2008, 14h50
  4. [C#] Est-il possible de l'optimiser pour certains jeux d'instruction ?
    Par Nicogmm dans le forum G�n�ral Dotnet
    R�ponses: 5
    Dernier message: 20/08/2006, 02h55
  5. Optimiser une requ�te..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    R�ponses: 9
    Dernier message: 27/09/2005, 11h31

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