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 :

Apprendre � programmer avec C++14 et C++17 pour des codes plus rapides et performants [Tutoriel]


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Par d�faut Apprendre � programmer avec C++14 et C++17 pour des codes plus rapides et performants
    Chers membres du club,

    J'ai le plaisir de vous pr�senter ce tutoriel de Dan Levin pour vous apprendre � rendre vos codes plus rapides (performants) avec C++14 et C++17.

    L'�criture de codes performants est toujours une t�che difficile. L'application directe des algorithmes th�oriques � purs � n'est pas toujours suffisante dans les architectures du monde r�el.

    Lorsqu'on a commenc� � am�liorer la rapidit� de ces algorithmes purs, on se trouve rapidement confront� � un dilemme : certaines impl�mentations s'av�rent relativement rapides sur une architecture, mais effroyablement lentes sur d'autres. Dans le m�me temps, dans certains contextes, une nouvelle impl�mentation va d�passer les performances de la premi�re, mais perdre de la vitesse dans tous les autres.

    De nombreuses optimisations, grandes et petites, pour chacune des architectures prises en charge peuvent rapidement faire gonfler notre code et nous faire perdre du temps. Souvent, nous sommes donc ramen�s � choisir entre deux options : un beau code trop lent, ou bien un code rapide mais illisible.
    Bonne lecture .



    Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation C++
    Pour contacter les diff�rents services du club (publications, partenariats, publicit�, ...) : Contacts

  2. #2
    Mod�rateur
    Avatar de grunk
    Homme Profil pro
    Lead d�v - Architecte
    Inscrit en
    Ao�t 2003
    Messages
    6 693
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Lead d�v - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 6 693
    Par d�faut
    Alors je suis pas expert dans le domaine mais quand je lit �a :

    Le code pr�c�dent est �quivalent � ce code, �crit en C++03 ou bien C++11 :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    switch(log2n)
    {
    case 1:
        add_stage<internal::fft_specialization_t<T, 1, false>::template type>(size, type);
        break;
    case 2:
        add_stage<internal::fft_specialization_t<T, 2, false>::template type>(size, type);
        break;
    case 3:
        add_stage<internal::fft_specialization_t<T, 3, false>::template type>(size, type);
        break;
    case 4:
        add_stage<internal::fft_specialization_t<T, 4, false>::template type>(size, type);
        break;
    case 5:
        add_stage<internal::fft_specialization_t<T, 5, false>::template type>(size, type);
        break;
    case 6:
        add_stage<internal::fft_specialization_t<T, 6, false>::template type>(size, type);
        break;
    case 7:
        add_stage<internal::fft_specialization_t<T, 7, false>::template type>(size, type);
        break;
    case 8:
        add_stage<internal::fft_specialization_t<T, 8, false>::template type>(size, type);
        break;
    default:
        if(is_even(log2n))
        {
            make_fft(size, type, cbool<true>, ctrue);
            add_stage<internal::fft_reorder_stage_impl_t<T, true>::template type>(size, type);
        }
        else
        {
            make_fft(size, type, cbool<false>, ctrue);
            add_stage<internal::fft_reorder_stage_impl_t<T, false>::template type>(size, type);    
        }
    }
    Je me dis que j'aurais plut�t fait un truc comme �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    if(log2n >= 1 && log2n <= 8) {
        add_stage<internal::fft_specialization_t<T, log2n, false>::template type>(size, type);
    } else {
        bool isEven = is_even(log2n);
        make_fft(size, type, cbool<isEven>, ctrue);
        add_stage<internal::fft_reorder_stage_impl_t<T, isEven>::template type>(size, type);
    }
    Donc soit j'ai pas compris une subtilit� , soit l'auteur original y met un peu de mauvaise fois histoire d'appuyer un peu plus son article
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    log2n est une variable dynamique. Tu ne peux pas l'utiliser directement comme param�tre template sans passer par un dispatching � coups de switch ou autre.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    C'est l'une des diff�rences entre les Template C++ et les g�n�riques JAVA.
    Les templates sont compil�s et optimis�s au moment de la compilation.
    En JAVA, ce n'est qu'un mod�le de code qui est g�n�r� � la compilation lors de la g�n�ration d'un g�n�rique.

  5. #5
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    rectification, en java, ce n'est pas un mod�le, c'est une seule classe/fonction, utilisant Object, et l'utilisation est compil�e (en byte code) � grand renfort de cast.

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Par contre, en C#...

    En revanche, il y a des limitations: Pas de SFINAE, pas de g�n�riques sur des valeurs (seulement des types), etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 22/06/2017, 19h28
  2. R�ponses: 3
    Dernier message: 16/01/2015, 00h21
  3. tutoriel pour apprendre � utiliser jquery, ajax. . .
    Par benja507 dans le forum jQuery
    R�ponses: 1
    Dernier message: 17/10/2008, 17h22

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