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

我们正在减lessWindows上的编译时间,因此正在考虑所有的选项。 我试图在Google上比较使用GCC(MinGW或Cygwin)和MSVC编译器(CL)的编译时间,但没有任何运气。 当然,做比较不会太难,但是我宁愿避免重蹈覆辙。

有没有人知道这样的比较呢? 或者,也许任何人都有一些实践经验?

input非常感谢:)

比较编译器不是微不足道的:

  • 它可能因处理器而异。 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扩展?
  • 你使用microbenchmarking或macrobenchmarking?

最后,你会发现结果不如统计错误;)

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

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