【问题标题】:Compile time with clang on Linux vs. Mac OSX在 Linux 与 Mac OSX 上使用 clang 编译时间
【发布时间】:2014-06-24 13:46:09
【问题描述】:

我正在使用 C++11、Boost、Qt 和一些较小的库开发一个跨平台项目。

在 Mac OSX 上测试构建我发现,与同一台机器上的 Linux Mint 17 上的 clang 相比,clang 只需要大约 66% 的时间。具有相同设置的基于 Qmake 的调试版本 (-j8)。

版本只是略有不同:

  • Clang:3.4
  • 提升:1.55.0
  • Qt:5.3 与 5.2.1

在 Linux 上切换到 libc++ 也没有什么不同。

编译时间的巨大差异来自哪里?
我可以在 Linux 上达到同样的速度吗?

【问题讨论】:

  • clang 本身是如何编译的?
  • 我在 Mac 上使用了 XCode 提供的那个,在 Linux 上使用了来自 repos 的那个,所以对我来说没什么特别的。我猜,他们提供优化版本?
  • 您是在测量 qmake 的运行还是 clang 的运行?你是如何测量的?
  • 只是整体时间,所以time make -j8

标签: c++ linux macos c++11


【解决方案1】:

Clang 在 OS X 上始终构建为 64 位 AMD64,但可能是 32 位 x86,具体取决于您的 Mint 构建。 64 位与 32 位肯定会对编译器性能产生影响。

【讨论】:

  • 在 Linux Mint 我得到 clang --version: Target: x86_64-pc-linux-gnu
  • @MikeM 使用file /path/to/clang 查看它构建的架构,而不是它构建的目标。
  • @MikeM 您也可以尝试从 make 中删除 -j8 以消除操作系统之间进程调度的可能差异。
  • @trojanfoe 抱歉,我没有看到目标……它是/usr/bin/clang。 @eightycc 如果我放弃-j8,是否还有另一种并行编译的可能性?
  • @MikeM 我认为这正是目标:并行编译。正如八十年代所说,这消除了操作系统可能的调度差异。但是还有很多与操作系统相关的其他可能原因(例如内存管理,如果您的代码大到需要大量内存)。如果你不是很幸运,我认为很难确定确切的原因。
猜你喜欢
  • 2020-07-06
  • 2016-09-20
  • 2017-10-07
  • 2015-05-13
  • 2018-10-05
  • 1970-01-01
  • 2012-01-17
  • 2012-02-17
  • 2016-02-04
相关资源
最近更新 更多