【问题标题】:Significantly slower code when compiling with G++ instead of LLVM使用 G++ 而不是 LLVM 编译时代码明显变慢
【发布时间】:2016-01-13 02:46:08
【问题描述】:

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

我正在为 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

【问题讨论】:

    标签: c++ xcode g++ llvm openmp


    【解决方案1】:

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

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

    【讨论】:

    • 这确实是正在发生的事情......我阅读编译器标志信息的网站的字体在 O 和 o 之间几乎没有区别,所以我认为它是后者......谢谢你一直这么指出这一点,因为我从来没有想过这是问题!
    猜你喜欢
    • 1970-01-01
    • 2014-12-21
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多