Windows gcc编译和Visual Studio编译之间的性能比较

Jon*_*rie 4 performance gcc cygwin overhead visual-studio

我目前正在编译一个随makefile文件提供的开源优化库(本机C++),以便与gcc一起使用.由于我是Windows用户,我很好奇我编写的两个选项,使用gcc与MinGW/Cygwin或手动构建Visual Studio项目并编译源代码.

1)如果我使用MinGW/Cygwin + gcc进行编译,生成的.lib(静态库)是否需要MinGW/Cygwin中的任何库?即我可以将已编译的.lib分发给没有MinGW/Cygwin的Windows PC,它仍会运行吗?

2)除了编译器本身之间的性能差异之外,在使用MinGW/Cygwin和gcc进行编译时是否存在相关的开销 - 如同仿真层被编译到库中一样,或者gcc是否构建了本机Windows库?

3)如果速度是我库的主要目标,哪种方法最好?我意识到这是非常开放的,我可能最好运行我自己的基准测试,但如果有人有经验,这将是伟大的!

Chr*_*oph 5

Cygwin的重点是Linux仿真层,默认情况下(即如果你不进行交叉编译),二进制文件需要cygwin1.dll运行.

对于MinGW来说情况并非如此,MinGW会将二进制文件创建为来自MSVC的二进制文件.但是,MinGW特别提供了自己的一组运行时库libstdc++-6.dll.这个库也可以通过使用静态链接-static-libstdc++,在这种情况下你也可能想要编译-static-libgcc.

这并不意味着您可以自由地混合来自不同编译器的C++库(请参阅mingw.org上的此页面).如果您不想将自己限制extern "C"在库的接口上,那么您很可能必须选择一个编译器并坚持使用它.

至于你的性能问题:使用Cygwin只会在实际与操作系统交互时造成(次要?)惩罚 - 在原始计算方面,只有优化器的质量很重要.