使用 G++ 而不是 LLVM 编译时代码速度明显变慢

Significantly slower code when compiling with G++ instead of LLVM

我正在试验我使用 XCode 7.0 用 C++ 编写的算法。当我将 XCode 中标准 LLVM 编译器的性能与使用 G++ (5.2.0) 编译时创建的二进制文件进行比较时,使用 LLVM 创建的二进制文件比使用g++ 编译器。

我正在为 g++ 编译器使用 -o3 代码优化标志,如下所示:

/usr/local/Cellar/gcc/5.2.0/bin/g++-5 -o3 -fopenmp -DNDEBUG main.cpp \
PattersonInstance.cpp \
... \
-o RROTprog

需要 g++ 编译,因为必须在无法使用 LLVM 编译器的高性能计算机上编译和 运行 算法。另外,我想使用 Open MP 来使代码更快。

关于造成这些速度差异的原因以及如何解决这些问题的所有想法都非常受欢迎。

在此先感谢您的帮助!

L

我敢打赌会发生以下情况:您将 -o3 传递给编译器,而不是 -O3(即使用 CAPITAL O),因此 -o3 只是指示编译器将可执行文件输出到名为 "3" 的文件中。但是,您稍后在同一命令行中使用 -o RROTprog,最后一个 -o 是编译器在输出可执行文件时考虑的那个。

最终效果:-O3 不存在,因此未进行任何优化。