草庐IT

c++ - 在几分钟内构建所有的 Boost

coder 2023-11-13 原文

谁能解释为什么要遵循这些说明:

http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install

...构建所有 Boost 需要我像样的机器 5 个小时,而 some folks报告说只用了 3 分钟 做了同样的事情?

除了上面提到的方法之外,还有另一种构建 Boost 的方法确实非常快(与几个小时相比,无论如何)。

我在 Darwin (Mac) 选项上使用 Clang 编译器。不确定它有多重要,但我有 16 GB RAM 和最新的 SSD。时钟频率为 2.3 Ghz。

编辑:我很高兴地报告,根据评论和答案,使用 ./b2 -j4 -d0 选项,我的编译时间缩短到了 13 分钟。此外,-jN 选项未在默认 --help 的可用选项集中列出,您必须改为调用 --help-options 查看这些额外的更“高级”技术。

最佳答案

我只是用几个不同的构建配置运行了几个测试。

硬件:2012 款 MacBook Pro(2.3Ghz Ivy Bridge i7 [i7-3615QM]),出厂 SSD 和 16GB 内存。

软件:带有 Xcode 7 的 Mac OS X 10.11.1(Apple LLVM 版本 7.0.0 clang-700.1.76)。来自网站的 Boost 1.59.0 的新拷贝。

我测试了以下构建命令:

默认构建:

./bootstrap.sh && ./b2 -j N

构建强制链接libc++

./bootstrap.sh && ./b2 toolset=clang cxxflags="-stdlib=libc++"linkflags="-stdlib=libc++"-j N

我为每个 N 尝试了三个不同的值:1(单线程)、4(匹配物理核心)和 8(匹配超线程核心)。

默认链接:

  • 8 的构建时间为 6:45 分钟
  • 4 的构建时间为 7:22 分钟
  • 1 的构建时间为 22:58 分钟

链接 libc++:

  • 对于 8,构建时间为 4:35 分钟
  • 4 的构建时间为 5:45 分钟
  • 1 的构建时间为 17:15 分钟

结论:即使不是全新的,Boost 也不必花一整天的时间在带有 SSD 的多核系统上构建。使用默认(单线程)构建确实比并行构建花费更长的时间。在 OS X 上使用 clang 构建的 Boost 确实从超线程中受益匪浅。与 libc++ 的链接似乎也快了一点。

关于c++ - 在几分钟内构建所有的 Boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566782/

有关c++ - 在几分钟内构建所有的 Boost的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. ruby-on-rails - 跳过状态机方法的所有验证 - 2

    当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

  4. ruby - Nokogiri 剥离所有属性 - 2

    我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog

  5. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  6. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  7. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  8. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  9. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  10. ruby - 如何遍历 Ruby 中所有正则表达式匹配的字符串? - 2

    我们有一个字符串:“”这个正则表达式://i如何从当前字符串中获取所有匹配项? 最佳答案 "".scan(//)参见scan在ruby​​-docs上 关于ruby-如何遍历Ruby中所有正则表达式匹配的字符串?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6857852/

随机推荐