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

标签 windows visual-studio gcc compiler-construction

我们正致力于减少 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/

相关文章:

vb.net - "Option Strict On disallows implicit conversions"执行不一致

C++ VS更改项目目录后需要重新编译

gcc - 有没有办法告诉 GCC 参数的范围?

file - WinAVR 和 native Windows 控制台应用程序

c++ - AttachConsole 和 QProcess::readAll()

c# - 在 C# 中从设备句柄获取驱动器号

windows - 了解 NDIS 虚拟微型端口驱动程序

visual-studio - 学习哪种汇编语言

gcc - SCons:保存/重定向 gcc 文本输出(警告)

C++ 控制台应用程序总是在最前面?