英特尔C++编译器作为微软的替代品?

ROA*_*OAR 28 c++ ide compiler-construction visual-studio

有人在这里使用英特尔C++编译器而不是微软的Visual c + +编译器吗?

我非常有兴趣听听您在集成,性能和构建时间方面的经验.

Tom*_*sen 27

英特尔编译器是可用的最先进的C++编译器之一,它具有许多优于例如Microsoft Visual C++编译器的优点,并且具有一个主要缺点.优点包括:

  • 非常好的SIMD支持,据我所知,编译器对SIMD指令有最好的支持.

  • 支持自动并行化(多核优化)以及手动(通过OpenMP),并且非常好.

  • 支持CPU调度,这非常重要,因为它允许编译器在程序运行时将处理器作为优化指令的目标.据我所知,这是唯一可用的C++编译器,除非G ++已经将它们引入了它们.

  • 它通常附带优化的库,例如数学和图像库.

但是它有一个主要的缺点,如上所述的调度程序只能在Intel CPU上运行,这意味着AMD cpu上会省略高级优化.有一种解决方法,但它仍然是编译器的主要问题.

要解决调度程序问题,可以替换使用在AMD处理器上运行的版本生成的调度程序代码,例如可以使用Agner Fog的 asmlib库替换编译器生成的调度程序函数.关于调度问题的更多信息,以及对某些主题的更详细的技术解释,可以在C++文章中的优化软件中找到- 也来自Anger(非常值得一读).

在个人方面,我使用了英特尔c ++编译器和Visual Studio 2005,它运行得很完美,我没有遇到微软特定语言扩展的任何问题,它似乎理解我使用的那些,但也许John Knoeller提到的那些是与我在项目中的不同.

虽然我喜欢英特尔编译器,但我目前正在使用微软C++编译器,这仅仅是因为英特尔编译器需要额外的投资.我只会使用英特尔编译器作为Microsofts或GNU编译器的替代品,如果性能对我的项目至关重要,并且我有一个财务部分;)

  • 小心绝对的"***mot高级编译器可用". (9认同)
  • @jalf:我同意这可能导致人们相信作者有偏见,但这是我们有一个可衡量的大小的情况.通过生成的可执行文件可以观察到,与竞争对手的编译器相比,英特尔编译器使用了更先进的优化技术. (8认同)

Nik*_*nić 5

我只有一次使用这个编译器的经验,编译STLPort.MSVC花了大约5分钟来编译它,ICC编译了一个多小时.看来他们的模板编译速度很慢.除此之外,我听说过它的好消息.

这里有一些有趣的东西:

英特尔的编译器可以生成不同版本的代码片段,每个版本都针对特定的处理器和/或指令集(SSE2,SSE3等)进行了优化.系统检测它正在运行的CPU并相应地选择最佳代码路径; 调度的CPU调度程序.

"但是,英特尔CPU调度程序不仅检查CPU支持哪个指令集,还检查供应商ID字符串,"雾详细信息",如果供应商字符串显示"GenuineIntel",则它使用最佳代码路径. CPU不是来自英特尔,在大多数情况下,即使CPU与更好的版本完全兼容,它也会运行最慢版本的代码."

OSnews的文章在这里

  • 您使用了哪些优化级别?如果您正在使用过程间优化(获取所有目标文件,将它们合并到一个巨大的目标文件中,并在链接时进行优化),ICC将比MSVC慢得多.但是,它会产生更好的结果. (2认同)

Cri*_*dam 5

我不是在工作/个人使用英特尔C++编译器(我希望如此).

我会用它,因为它有:

  • 出色的内联汇编程序支持.对于x86和x64平台,英特尔C++支持英特尔和AT&T(GCC)汇编语法.Visual C++只能处理Intel汇编语法,仅适用于x86.

  • 支持SSE3,SSSE3和SSE4指令集.Visual C++支持SSE和SSE2.

  • 基于EDG C++,它具有完整的 ISO/IEC 14882:2003标准实现.这意味着您可以使用/学习每个C++功能.