【问题标题】:Compile time comparison between Windows GCC and MSVC compilerWindows GCC 和 MSVC 编译器的编译时间比较
【发布时间】:2011-01-26 11:36:52
【问题描述】:

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

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

非常感谢您的输入 :)

【问题讨论】:

    标签: windows visual-studio gcc compiler-construction


    【解决方案1】:

    比较编译器并非易事:

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

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

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

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

    【讨论】:

    • 问题在于编译时间,而不是生成的可执行文件的性能。
    • 几乎所有上述内容都适用,除了最后一个可能用于测量编译器速度。
    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 2017-10-17
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多