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

lar*_*moa 9 windows compiler-construction gcc visual-studio

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

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

输入非常感谢:)

Mac*_*tka 4

比较编译器并不简单:

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

最后你会发现结果小于统计误差;)

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

附言。我想说 cygwin 将是最慢的,因为它在 POSIX 和 WinAPI 之间有额外的间接级别。