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

Affichage des résultats du sondage: Quel est votre compilateur C/C++ préféré en 2018 ?

Votants
25. Vous ne pouvez pas participer à ce sondage.
  • GCC/G++

    8 32,00%
  • Clang

    5 20,00%
  • Visual C++

    7 28,00%
  • Autres (à préciser)

    1 4,00%
  • Pas d'avis

    4 16,00%
  1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Consultant
    Inscrit en
    juillet 2013
    Messages
    2 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 2 038
    Points : 65 254
    Points
    65 254
    Billets dans le blog
    2

    Par défaut Clang est maintenant utilisé pour compiler Chrome pour Windows, Google abandonne donc Visual C++

    Clang est maintenant utilisé pour compiler Chrome pour Windows, Google abandonne donc Visual C++
    et en voici les raisons

    Google Chrome sous Windows est maintenant construit en utilisant le compilateur open source Clang. Ainsi, après avoir utilisé le compilateur C++ de Microsoft pour la version Windows de son navigateur, Google utilise maintenant le même compilateur pour Windows, macOS, Linux et Android ; un changement qui fait de Chrome le premier projet majeur à utiliser Clang sous Windows.

    Sur macOS et Linux, Chrome était déjà construit en utilisant le compilateur Clang et la chaîne d'outils LLVM. Mais Chrome pour Windows utilisait plutôt le compilateur Visual C++ de Microsoft. Il s'agit en effet du compilateur le mieux pris en charge et le plus largement utilisé sur Windows et, de manière logique, Visual C++ est le compilateur avec le meilleur support pour la large gamme d'outils de débogage et de diagnostic de Windows.

    En 2013, Google a toutefois décidé d'utiliser Clang sur toutes les plateformes, pour diverses raisons, y compris le fait qu'utiliser le même compilateur partout pourrait rendre le développement beaucoup plus facile. Mais la firme de Mountain View a été confrontée à un problème bloquant : le support de Clang et LLVM n'était pas assez mature pour qu'elle puisse faire ce changement rapidement. Google a donc commencé par mettre en place une équipe pour travailler sur Clang et LLVM afin qu'ils puissent avoir un meilleur support sous Windows. Depuis 2015, Google a ainsi pu commencer à tester l'utilisation de Clang pour compiler Chrome pour Windows dans la version Canary. L'objectif était de s'assurer d'être prêt à implémenter ce changement dans la version stable du navigateur ; ce qui est maintenant le cas avec Chrome 64 disponible depuis fin janvier.


    « Depuis Chrome 64, Chrome pour Windows est compilé avec Clang. Nous utilisons maintenant Clang pour construire Chrome pour toutes les plateformes sur lesquelles il s'exécute : macOS, iOS, Linux, Chrome OS, Android et Windows. Windows est la deuxième plateforme avec le plus grand nombre d'utilisateurs de Chrome après Android selon StatCounter, ce qui rend ce changement particulièrement excitant », a annoncé Nico Weber de Google.

    Il explique que Clang est le tout premier compilateur C++ open source ABI-compatible avec Microsoft Visual C++ (MSVC), ce qui signifie que vous pouvez construire certaines parties de votre programme (par exemple, les bibliothèques système) avec le compilateur MSVC ("cl.exe"), d'autres parties avec Clang, les lier entre elles (soit par l'éditeur de liens de MSVC, "link.exe", ou LLD, l'éditeur de liens du projet LLVM) et obtenir un programme qui fonctionne.

    La compilation de Chrome localement avec Clang est environ 15 % plus lente qu'avec MSVC. Cependant, la façon dont Clang émet des informations de débogage est plus parallélisable et les builds avec un service de build distribué (par exemple Goma) sont donc plus rapides. La taille du programme d'installation de Chrome est plus petite pour les versions 64 bits et légèrement plus grande pour les versions 32 bits utilisant Clang. Côté performance, les chiffres de télémétrie de Google indiquent que la compilation donne à peu près les mêmes résultats que ça soit avec MSVC ou Clang. Idem en ce qui concerne la stabilité.

    En plus des bénéfices d'utiliser le même compilateur pour les plateformes de Chrome (cross-compilation, disponibilité d'optimisations spécifiques sur toutes les plateformes, etc.), Google met en avant d'autres motivations comme l'ouverture de Clang. Chromium étant open source, Google pense en effet que c'est bien qu'il soit construit avec une chaîne d'outils open source. Google explique aussi qu'avec moins de compilateurs, cela devient beaucoup plus facile d'activer de nouvelles fonctionnalités C++.

    Google cite un certain nombre d'avantages à passer à Clang. Mais, il y a également des inconvénients. L'entreprise explique notamment que :
    • Clang ne prend pas en charge C++ / CX ou #import "foo.dll" ;
    • MSVC offre un support payant, alors que Clang ne vous donne que le code et la possibilité d'écrire des correctifs vous-même (bien que la communauté soit très active et utile) ;
    • MSVC a une meilleure documentation ;
    • les fonctionnalités de débogage avancées telles que Modifier et Continuer ne fonctionnent pas avec Clang.

    Il est également important de préciser que Google n'a pas encore complètement migré vers la chaîne d'outils LLVM. « Clang n'est pas un remplaçant de Visual Studio, mais un complément », a dit Nico Weber. « Nous utilisons encore les en-têtes et les bibliothèques de Microsoft pour compiler Chrome, nous utilisons encore des binaires SDK comme midl.exe et mc.exe, et de nombreux développeurs Chrome/Windows utilisent encore l'EDI Visual Studio (pour le développement et le débogage) ». Mais à terme, Google prévoit de passer à l'éditeur de liens LLVM et peut également utiliser la bibliothèque libc++ à la place de la STL MSVC.

    Source : Blog LLVM

    Et vous ?

    Qu'en pensez-vous ?
    Quel est votre compilateur C/C++ préféré en 2018 ? Pourquoi ?

    Voir aussi :

    Chrome 65 est disponible avec de nouvelles fonctionnalités développeur, la page d'extensions se met également au Material Design
    Sortie de LLVM et Clang 5.0, avec des améliorations de performance pour beaucoup de processeurs et une implémentation des coroutines
    Microsoft propose une compilation des fonctionnalités de C++ 17 dans la préversion Visual C++ 2017 version 15.3, et indique celles qui sont à venir
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 486
    Points : 707
    Points
    707

    Par défaut

    C'est quoi ce sondage ? Il manque des principaux compilateurs tel que MinGW, MSVC compiler, et j'en oublie sûrement d'autres...

    Ah, autant pour moi, MSVC compiler n'était pas affiché car personne n'avez voté pour et MinGW c'est G++ pour windows.

  3. #3
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    juin 2013
    Messages
    3 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2013
    Messages : 3 716
    Points : 991
    Points
    991
    Billets dans le blog
    9

    Par défaut

    autre: Intel C++ Compilers, c'est celui qui offre les meilleurs perf

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant Ingenierie mécanique
    Inscrit en
    mars 2006
    Messages
    968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant Ingenierie mécanique
    Secteur : Transports

    Informations forums :
    Inscription : mars 2006
    Messages : 968
    Points : 2 080
    Points
    2 080

    Par défaut

    je ne le connaissais pas. on peut l'utiliser dans visual studio ? est ce que tu aurais un comparatif perf de ce compilateur fasse aux autres ?

  5. #5
    Expert éminent Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    3 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2002
    Messages : 3 696
    Points : 8 957
    Points
    8 957

    Par défaut

    Citation Envoyé par Matthieu76 Voir le message
    C'est quoi ce sondage ? Il manque des principaux compilateurs tel que MinGW, MSVC compiler, et j'en oublie sûrement d'autres...
    • MSVC, c'est le compilateur de Visual C++.
    • Mingw est un portage Windows de GCC.


    Citation Envoyé par RyzenOC Voir le message
    autre: Intel C++ Compilers, c'est celui qui offre les meilleurs perf
    Il faut se méfier des déclaration péremptoires dans le domaine des performance des compilateurs. Les micro benchmark, peuvent facilement donner l'avantage à un compilateur ou l'autre suivant les cas. L'écart global est rarement énorme.

    C'est vrai que le compilateur Intel a longtemps eu la réputation d'être sensiblement meilleur, mais les autres compilateurs ont globalement comblé leur retard.

  6. #6
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    juin 2013
    Messages
    3 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2013
    Messages : 3 716
    Points : 991
    Points
    991
    Billets dans le blog
    9

    Par défaut

    Citation Envoyé par Uther Voir le message
    Il faut ce méfier des déclaration péremptoires dans le domaine des performance des compilateurs.
    C'est vrai que le compilateur Intel a longtemps eu la réputation d'être sensiblement meilleur, mais les autres compilateurs ont globalement comblé leur retard.

    Les micro benchmark, peuvent facilement donner l'avantage à un compilateur ou l'autre suivant les cas. L'écart global est rarement énorme.

    J'utilise beaucoup l'AVX512, et actuellement que se soit sur des cpu x86 intel (ou amd ) c'est avec celui la que j'ai les meilleurs perf.
    Niveau benchmark tu as par exemple GYSELA, Stream et HPL

  7. #7
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    septembre 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : septembre 2015
    Messages : 57
    Points : 328
    Points
    328

    Par défaut

    Il y en a qui ont regardé au niveau de l'assembleur généré ?

    J'avais regardé avec MSVC et MingW sur le même fichier source. (juste les différences au niveau du code généré, je n'avais pas regardé les perfs)
    A part dans la gestion de la pile, les différences ne sont pas énormes

    Pour MingW, le code généré était assez "proche" du source
    par contre pour MSVC, il y avait un peu plus de modifications du code

  8. #8
    Expert éminent

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2003
    Messages
    5 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : juin 2003
    Messages : 5 628
    Points : 9 952
    Points
    9 952
    Billets dans le blog
    3

    Par défaut

    Il y a un très bon site spécialisé pour comparer le code assembleur généré par de nombreux compilos C++:
    https://godbolt.org/

    Intel C++ a la réputation d'être le meilleur pour tout ce qui relève de la vectorisation du code, donc typiquement ce qui touche au calcul intensif.

    Mais à un niveau plus global, la performance va se jouer sur la capacité du compilo à inliner massivement et "applatir" les abstractions en particulier celles basées sur les templates ou plus récemment les fonction constexpr. Certains compilos (clang) savent même faire sauter les allocations dynamiques de certains objets.

    Ainsi, perso, j'ai observé des écarts important à ce niveau entre VC++ et g++/clang. Et même ces deux là, il y a un gros écart entre g++ 5.x et les version >= 6.

    En général j'aime bien VC++, mais au niveau de constexpr en particulier, je peux observer qu'il est clairement en retard : clang et gcc optimisent dès qu'ils peuvent, alors que VC++ il faut lui forcer la main. Idem au niveau de l'inlining de std::function. Ca peut faire un gros écart au final surtout si on adopte un style fonctionnel.

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 414
    Points : 21 160
    Points
    21 160

    Par défaut

    Je pense que le compilateur Intel fait du code optimisé Intel. Il faudrait voir ce qu'il vaut avec les CPU non Intel.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Expert éminent Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    3 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2002
    Messages : 3 696
    Points : 8 957
    Points
    8 957

    Par défaut

    C'est simple, il ne les gère tout simplement pas. Les compilateur Intel ne gère que les processeur Intel compatibles : x86, x86_64 et Itanium.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/03/2017, 02h19
  2. Réponses: 0
    Dernier message: 18/03/2015, 15h03
  3. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  4. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  5. parametres pour un editeur pour compiler grace à visual 2008 ou mingw
    Par fullmoon2 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 18/01/2009, 21h52

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