编译Windows GCC和MSVC编译器之间的时间比较

时间:2010-03-11 16:53:40

标签: windows visual-studio gcc compiler-construction

我们正致力于减少Windows上的编译时间,因此正在考虑所有选项。我试图在谷歌上查看使用GCC(MinGW或Cygwin)和MSVC编译器(CL)的编译时间之间没有任何运气的比较。当然,进行比较并不难,但如果可以的话,我宁愿避免重新发明轮子。

有人知道这样的比较吗?或者也许有人有一些实践经验?

非常感谢输入:)

1 个答案:

答案 0 :(得分:4)

比较编译器并非易事:

  • 可能因处理器而异。 GCC可以更好地针对Core 2 Duo的i7和MSVC进行优化,反之亦然。性能可能会受到缓存等的影响。(展开循环或不展开循环,这就是问题;))。
  • 这在很大程度上取决于代码的编写方式。某些成语(相当于彼此)可能是一个编译器的首选。
  • 这取决于代码的使用方式。
  • 这取决于旗帜。例如,gcc -O3通常会产生较慢的代码,然后-O2-Os
  • 这取决于可以对代码做出什么假设。您是否允许严格别名或不允许(gcc中为-fno-strict-aliasing / -fstrict-aliasing)。您是否需要完整的IEEE 754或者您是否可以弯曲浮动指针计算规则(-ffast-math)。
  • 它还取决于特定的处理器扩展。你是否启用MMX / SSE。你是否使用内在函数或没有。您是否依赖代码是否与i386兼容。
  • 哪个版本的gcc?哪个版本的msvc?
  • 您是否使用任何gcc / msvc扩展程序?
  • 您使用微基准测试还是宏基准测试?

最后你发现结果不如统计误差;)

即使使用单个应用程序,结果也可能是不确定的(函数A在gcc中表现更好,但在msvc中表现更好)。

PS。我会说cygwin会比较慢,因为它在POSIX和WinAPI之间有额外的间接性。