2010-03-11 140 views
9

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

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

输入十分赞赏:)

回答

4

比较编译器是不平凡的:

  • 它可以从处理器变化到处理器。 GCC可能会更好地针对酷睿2双核的i7和MSVC进行优化,反之亦然。性能可能会受到缓存等的影响(展开循环或不展开循环,这就是问题;))。
  • 它很大程度上取决于如何编写代码。一个编译器可能会偏好某些成语(相当于彼此)。
  • 这取决于如何使用代码。
  • 这取决于标志。例如,已知gcc -O3经常产生较慢的代码,然后-O2-Os
  • 这取决于可以对代码做出什么假设。你可以允许严格的别名或否(gcc中的-fno-strict-aliasing/-fstrict-aliasing)。你需要完整的IEEE 754还是可以弯曲浮点指针计算规则(-ffast-math)。
  • 它也取决于特定的处理器扩展。你是否启用MMX/SSE?你使用内部函数还是不使用内部函数?你是否依赖该代码是否兼容i386?
  • 哪个版本的gcc?哪个版本的msvc?
  • 你使用任何gcc/msvc扩展名吗?
  • 您是否使用微基准或macrobenchmarking?

,并在最后你发现,结果是小于统计误差;)

即使单个应用程序使用的结果可能是不确定的(功能更好的在GCC的MSVC执行,但乙)。

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

+0

问题是关于编译时间,而不是关于结果可执行文件的性能。 – 2011-05-26 10:28:27

+0

几乎所有的上述内容都适用,除了可能是测试编译器速度的最后一个。 – 2011-05-26 19:55:52

+0

downvote的任何原因? – 2014-07-23 11:04:59