我们正致力于减少 Windows 上的编译时间,因此正在考虑所有选项。我试图在谷歌上寻找使用 GCC(MinGW 或 Cygwin)和 MSVC 编译器(CL)的编译时间之间的比较,但没有任何运气。当然,进行比较并不难,但如果可以的话,我宁愿避免重新发明轮子。
有人知道那里有这样的比较吗?或者也许有人有一些实践经验?
输入非常感谢:)
最佳答案
比较编译器并不简单:
- 它可能因处理器而异。 GCC 可能会更好地针对 i7 进行优化,而 MSVC 会针对 Core 2 Duo 进行更好的优化,反之亦然。性能可能会受到缓存等因素的影响(展开循环或不展开循环,这是个问题 ;))。
- 这在很大程度上取决于代码的编写方式。某些习语(彼此等价)可能会被一个编译器偏爱。
- 这取决于代码的使用方式。
- 这取决于标志。例如,众所周知,gcc
-O3
生成的代码通常比-O2
或-Os
慢。 - 这取决于可以对代码做出什么样的假设。您可以允许严格别名还是不允许(gcc 中的
-fno-strict-aliasing
/-fstrict-aliasing
)。您需要完整的 IEEE 754 还是可以弯曲 float 指针计算规则 (-ffast-math
)。 - 它还取决于特定的处理器扩展。是否启用 MMX/SSE。你是否使用内在函数。您是否依赖该代码是否兼容 i386。
- 哪个版本的 gcc?哪个版本的 msvc?
- 您使用任何 gcc/msvc 扩展吗?
- 您使用微基准测试还是宏基准测试?
最后你会发现结果比统计误差小 ;)
即使使用单个应用程序,结果也可能不确定(函数 A 在 gcc 中表现更好,但 B 在 msvc 中表现更好)。
附言。我会说 cygwin 将是最慢的,因为它在 POSIX 和 WinAPI 之间有额外的间接级别。
关于windows - Windows GCC 和 MSVC 编译器的编译时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426942/