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 :

Questions C++ : Short/Int et inline


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut Questions C++ : Short/Int et inline
    Bonjour � tous,


    Je suis en train de mapper des donn�es de base de donn�es avec des membres C++, et j'ai des donn�es qui vont de 1 � 10 par l�.

    Est-ce que je les met dans un unsigned short ou un unsigned int ?
    Unsigned, la compteur commen�ant � 1, la valeur 0 suffira pour indiquer que la donn�e n'est pas positionn�e (pas besoin de -1) mais int ou short... je suis all� faire un tour dans les types du C++ et je me rend compte que ce sont les m�mes...

    A moins que j'utilise un unsigned char ? Vous feriez quoi ?


    Et autre chose concernant les fonctions inline. J'ai vu que c'�tait un peu les macro du C++, pour g�n�rer le code de la fonction inline directement � l'appel, comme les macro, mais en conservant le type.
    J'ai lu �galement que si l'on en mettait pas, le compilateur allait en assigner intelligemment, et que si on en met trop le compilateur en refuserai.

    Si �a ne fait que remplacer du code, on perd en temps de compilation j'imagine, mais on y gagne en ex�cution, c'est dangeureux d'en abuser ?


    Merci

    A bient�t

  2. #2
    NairodDorian
    Invit�(e)
    Par d�faut
    Est-ce que je les met dans un unsigned short ou un unsigned int ?
    Les processeurs x86 pr�f�rent travaill�s avec 32 bits ou 8 bits mais pas avec 16 bits. Donc unsigned char ou unsigned int mais surement pas unsigned short sinon le compilateur g�n�rera syst�matique movsz. Quand � moi je te conseil unsigned int.

    c'est dangeureux d'en abuser ?
    En g�n�ral on inline pas tout est n'importe quoi. Un bon compilo d�cidera seul si c'est vraiment utile que t'es d�clar� ta fonction inline. Si t'es d�butant laisse boss� le compilo surtout si t'as MSC++ avec l'option /GL.

  3. #3
    Membre �m�rite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par d�faut
    Moi je part du principe qu'en C++ si l'on a besoin d'un entier on utilise int, sauf si on a une bonne raison pour utiliser autre chose.

    Ici je ne vois pas l'int�r�t d'utiliser un non-sign� par exemple, � part augmenter la probabilit� d'un bug du � l'arithm�tique plus compliqu�e des non-sign�s.

  4. #4
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut
    Utiliser des entiers non sign�s est plus long � l'ex�cution ?

  5. #5
    NairodDorian
    Invit�(e)
    Par d�faut
    Bien s�r que non.

  6. #6
    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
    Utiliser des entiers sign�s pour des indexes �a fait des bugs de s�curit� �vidents.

  7. #7
    Mod�rateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur d'emploi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par d�faut
    Citation Envoy� par mister3957 Voir le message
    Je suis en train de mapper des donn�es de base de donn�es avec des membres C++, et j'ai des donn�es qui vont de 1 � 10 par l�. A moins que j'utilise un unsigned char ? Vous feriez quoi ?
    Tout d�pend de la quantit� de donn�es que tu as � stocker en m�moire. Moi, personnellement, pour compter de 1 � 10, j'utiliserais all�grement un unsigned char, voire m�me un partitionnement bit � bit dans une structure. Par contre, je conserverais quand m�me int pour toutes les variables � de travail � (indices de boucles, etc.) de fa�on � respecter le format du bus et des registres du processeur.

    Et autre chose concernant les fonctions inline. J'ai vu que c'�tait un peu les macro du C++, pour g�n�rer le code de la fonction inline directement � l'appel, comme les macros [...] Si �a ne fait que remplacer du code, on perd en temps de compilation j'imagine, mais on y gagne en ex�cution, c'est dangeureux d'en abuser ?
    Attention � ne pas confondre. Les � macros � existent en C et C++. Les inline s'�valuent de la m�me fa�on que les fonctions ordinaires mais leur code est dupliqu� directement plut�t qu'appel�es en utilisant la pile. Je ne pense pas que le surco�t en temps de compilation soit vraiment mesurable, � moins d'utiliser des fonctions inline g�antes, ce qui n'aurait pr�cis�ment aucun sens.

    Il n'est pas sp�cialement dangereux de les utiliser sauf dans un cas (b�te) : celui o� une fonction serait tellement r�pandue que l'on voudrait augmenter les perfs en diminuant le temps d'appel � chaque fois. On risque surtout de factoriser l'augmentation en taille et �a peut �tre dramatique pour un gain en vitesse quasi-nul.

    Pour le reste, les cas o� inline sont utiles sont tellement pr�cis que l'on peut affirmer sans risque : � si tu ne sais pas � quoi �a sert, tu n'en as probablement pas besoin �.

    Les cas o� inline peut �tre int�ressant est lorsque qu'une fonction simple est appel�e dans une boucle. On gagne la dur�e du saut � chaque passage et le code ins�r� au milieu de l'environnement peut-�tre optimis� par le compilo (registres), on �vite de vider le contenu du pipe-line, etc.

    � examiner au cas par cas, donc.

  8. #8
    Membre confirm� Avatar de zabibof
    Inscrit en
    F�vrier 2007
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 188
    Par d�faut
    Citation Envoy� par Obsidian
    Je ne pense pas que le surco�t en temps de compilation soit vraiment mesurable
    Bien s�r, �a n'a aucun impact sur le temps de compilation quand tu modifies l'impl�mentation d'une fonction inline qui se trouve dans un fichier en-t�te "includ�" par 50 autres fichiers en-t�tes

  9. #9
    Mod�rateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur d'emploi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par d�faut
    C'est ce que j'explique dans mon troisi�me paragraphe.

    Et m�me l�, malgr� tout, quand tu te retrouves � inclure une fonction inline dans cinquante fichiers d'ent�te, d�j�, il doit y avoir quelque chose de pas correct, � mon avis, mais surtout, si ta fonction inline est suffisamment cons�quente pour ralentir la compilation, c'est qu'elle ne doit pas �tre inline.

    � moins que tu parles des d�pendences entre les fichiers � la compilation et, dans ce cas, ce n'est pas le fait que la fonction soit inline qui provoque la recompilation en cascade ...

  10. #10
    screetch
    Invit�(e)
    Par d�faut
    si c'est pour le stockage ca peut valoir le cout de sauver un octet ou deux par structure. sinon, il vaut mieux utiliser la plus grande capacit� pour eviter de se retrouver avec des maths fausses. et n'utiliser signed int que si le resultat est vraiment sign�.
    Au niveau generation de code, ca ne changera rien, et c'est au compilateur d'effectuer ce genre d'operations correctement, pas a celui qui ecrit.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 20/04/2010, 16h28
  2. Tester un type short, int, float en m�me temps.
    Par franculo_caoulene dans le forum C#
    R�ponses: 2
    Dernier message: 06/05/2009, 16h02
  3. ['biess Question]Float to int - pr�cision
    Par Antho42 dans le forum C#
    R�ponses: 4
    Dernier message: 26/03/2009, 15h59
  4. [type]question bete de int range
    Par banzzai dans le forum Administration
    R�ponses: 2
    Dernier message: 17/05/2006, 09h37
  5. short int et int
    Par gaut dans le forum C
    R�ponses: 3
    Dernier message: 07/02/2004, 21h06

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