代码之家  ›  专栏  ›  技术社区  ›  larsmoa

windows-gcc与msvc编译器编译时比较

  •  9
  • larsmoa  · 技术社区  · 14 年前

    我们正在努力减少windows上的编译时间,因此正在考虑所有的选项。我试着在google上查找使用gcc(mingw或cygwin)和msvc编译器(cl)的编译时之间的比较,但没有任何运气。当然,做一个比较并不难,但如果可以的话,我宁愿避免重新发明轮子。

    有人知道这样的比较吗?或者有人有经验?

    非常感谢您的意见:)

    1 回复  |  直到 14 年前
        1
  •  4
  •   Maja Piechotka    14 年前

    比较编译器并不简单:

    • 它可能因处理器而异。gcc可以更好地优化i7,msvc可以优化core 2 duo,反之亦然。性能可能会受到缓存等的影响(展开循环或不展开循环,这是问题;)。
    • 这在很大程度上取决于代码的编写方式。一个编译器可能会首选某些习语(彼此等价)。
    • 这取决于代码的使用方式。
    • 这取决于旗帜。例如GCC -O3 通常会产生较慢的代码 -O2 -Os .
    • 这取决于对代码的假设。是否允许严格的别名( -fno-strict-aliasing / -fstrict-aliasing 在海湾合作委员会)。您需要完整的ieee 754还是可以弯曲浮点指针计算规则?( -ffast-math )
    • 它还取决于特定的处理器扩展。是否启用MMX/SSE。您是否使用内部函数或否。您是否确定代码与i386兼容。
    • 哪个版本的GCC?哪个版本的msvc?
    • 您是否使用任何gcc/msvc扩展?
    • 你使用微标杆还是宏标杆?

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

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

    我想说cygwin是最慢的,因为它在posix和winapi之间有额外的间接级别。