2015-10-14 128 views
4

我正在试验一种使用XCode 7.0在C++中编写的算法。当我比较XCode中的标准LLVM编译器与使用G ++(5.2.0)编译时创建的二进制文件的性能时,使用LLVM创建的二进制文件比使用g ++编译器创建的代码快一个数量级(> 10倍)。使用G ++而不是LLVM编译时代码显着较慢代码

我使用g ++编译器的-03代码优化标志如下:

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

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

所有关于造成这些速度差异以及如何解决这些问题的原因都值得欢迎。

在此先感谢您的帮助!

大号

回答

10

我可以打赌,会发生什么情况是这样的:你通过-o3编译器,而不是-O3(即CAPITAL O),并为此-o3只是指示编译器生成的可执行输出到文件名为"3"。但是,稍后在同一命令行中使用-o RROTprog,最后的-o是编译器在输出可执行文件时考虑的那个。

实际效果:-O3不存在,因此没有进行优化。

+0

这确实是发生了什么...我在编译器标志上读取信息的站点有一个字母,它与O和o之间的区别很小,所以我认为它是后者...非常感谢指出这一点,因为我永远不会认为这是问题! –