28 votes

Le compilateur Intel C++ comme une alternative à Microsoft?

Est ce que quelqu'un ici en utilisant le compilateur Intel C++ au lieu de Microsoft Visual c++ compilateur?

Je serais très intéressé de connaître votre expérience au sujet de l'intégration, de performance et de temps de réalisation.

27voto

TommyA Points 3352

Le compilateur Intel est l'un des plus avancées du compilateur C++ disponibles, il a un certain nombre d'avantages par rapport, par exemple, le compilateur Microsoft Visual C++, et un inconvénient majeur. Les avantages incluent:

  • Très bon SIMD de soutien, d'autant que j'ai pu trouver, c'est le compilateur qui a le meilleur support pour les instructions SIMD.

  • Supporte à la fois la parallélisation automatique (multi core optimzations), ainsi qu'au manuel d'utilisation (par OpenMP), et fait tous les deux très bien.

  • Charge CPU d'expédition, ce qui est vraiment important, car il permet au compilateur de cible le processeur pour des instructions optimisées lorsque le programme s'exécute. Aussi loin que je peux dire c'est le seul compilateur C++ disponibles, à moins que ce G++ a introduit dans leurs encore.

  • Il est souvent livré avec des bibliothèques optimisées, telles que les mathématiques et l'image des bibliothèques.

Il a cependant un inconvénient majeur, le répartiteur comme mentionné ci-dessus, ne fonctionne que sur des processeurs Intel, ce qui signifie que les optimisations avancées seront laissés de côté AMD cpu. Il y a une solution, mais c'est encore un problème majeur avec le compilateur.

Pour contourner le répartiteur problème, il est possible de remplacer le répartiteur code produit avec une version de travail sur les processeurs AMD, on peut par exemple utiliser Agner de la Brume asmlib bibliothèque qui remplace le compilateur a généré répartiteur de la fonction. Beaucoup plus d'informations à propos de l'expédition de problème, et technique plus détaillée des explications de certains sujets peuvent être trouvées dans l' Optimisation de logiciels en C++ papier - aussi de la Colère (ce qui est vraiment la peine de lire).

Sur une note personnelle, j'ai utilisé le Compilateur Intel c++ avec Visual Studio 2005, où il a fonctionné parfaitement, je n'ai pas de problèmes avec microsoft extensions de langage, il semblait comprendre ceux que j'ai utilisé, mais peut-être que ceux mentionnés par Jean Knoeller étaient différents de ceux que j'avais dans mes projets.

Bien que j'aime le compilateur Intel, je suis actuellement en train de travailler avec le compilateur C++ de microsoft, tout simplement parce que de la financière investissement supplémentaires, le compilateur Intel exige. Je tiens seulement à utiliser le compilateur Intel comme une alternative à Microsoft ou le compilateur GNU, si les performances sont critiques à mon projet et j'ai eu la partie financière dans l'ordre ;)

5voto

Nikola Smiljanić Points 15585

J'ai eu une seule expérience avec ce compilateur, de compiler des STLPort. Il a fallu MSVC environ 5 minutes pour le compiler et l'ICC a été la compilation de plus d'une heure. Il semble que leur modèle de compilation est très lent. Autre que cela, j'ai entendu que de bonnes choses à ce sujet.

Voici quelque chose d'intéressant:

Intel compilateur peut produire différents les versions des morceaux de code, avec chaque version optimisée pour un processeur et/ou du jeu d'instructions (SSE2, SSE3, etc.). Le système détecte quel est le PROCESSEUR, il est exécuté sur et choisit l'optimal chemin de code en conséquence; CPU répartiteur, comme on les appelle.

"Cependant, le PROCESSEUR Intel répartiteur n'est pas seulement de vérifier les instructions est pris en charge par le CPU, il a également contrôles de la chaîne d'ID de fournisseur, le" Brouillard les détails, "Si le fournisseur de la chaîne dit 'GenuineIntel' ensuite, il utilise l' un code optimal chemin. Si le CPU n'est pas à partir d'Intel, dans la plupart des cas, il va courir le plus lent possible version du code, même si le CPU est entièrement compatible avec une meilleure version."

OSnews l'article ici

5voto

Cristian Adam Points 3691

Je ne suis pas en utilisant le compilateur Intel C++ au travail / personnel (j'aurais).

Je voudrais l'utiliser parce qu'il a:

  • Excellent assembleur en ligne de soutien. Intel C++ prend en charge les processeurs Intel et AT&T (GCC) assembleur syntaxes, pour les plateformes x86 et x64. Visual C++ ne peut traiter qu'Intel assemblée syntaxe et seulement pour les architectures x86.

  • Soutien pour le SSE3, SSSE3, et des jeux d'instructions SSE4. Visual C++ dispose d'un support pour le SSE et SSE2.

  • Est basé sur GDE C++, qui a un complet ISO/IEC 14882:2003 mise en œuvre. Cela signifie que vous pouvez utiliser / apprendre chaque C++ fonctionnalité.

3voto

JesperE Points 34356

J'ai essayé en utilisant Intel C++ à mon ancien boulot. Autant que je me souvienne, il n'a en effet de générer des code plus efficace au détriment du temps de compilation. Nous n'avons pas le mettre pour une utilisation en production, même si, pour des raisons que je ne peux pas me rappeler.

Une différence importante par rapport à MSVC est que le compilateur Intel prend en charge C99.

3voto

Drew Hoskins Points 3206

Pour l'anecdote, j'ai trouvé que le compilateur Intel se bloque de plus en plus fréquemment que Visual C++. Ses diagnostics sont un peu plus approfondie et clairement écrit que la VC. Ainsi, il est possible que le compilateur va donner des diagnostics qui n'ont pas donné de capital de risque, ou un crash où VC n'a pas, de faire votre conversion plus cher.

Toutefois, je crois que Intel compilateur permet de vous relier avec Microsoft runtimes comme le CRT, en allégeant le coût de transition.

Si vous faites interagir avec du code managé, vous devriez probablement s'en tenir avec le compilateur de Microsoft.

Récente compilateurs Intel réduire de manière significative les performances de virgule flottante de lourds indices de référence, et sont similaires à Visual C++ sur un nombre entier de lourds indices de référence. Cependant, il varie considérablement basé sur le programme et si oui ou non vous êtes en utilisant le lien en temps de génération de code ou de profil guidée de l'optimisation. Si le rendement est important pour vous, vous aurez besoin de tester les performances de votre application avant de faire un choix. Je voudrais seulement dire que si vous faites le calcul scientifique, c'est probablement la peine de la durée de l'enquête.

Intel permet à un mois d'essai gratuit de son compilateur, de sorte que vous pouvez essayer ces choses par vous-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X