提升 C++ 构建效率——以 Bitcoin Core 为例

在这里插入图片描述
Dori 曾在之前的博客《如何高效创建 C++ 并行构建?》中,提到了 Chandler Carruth 在 CPPCon 2019 中一个很棒的演讲,《没有零成本的抽象》。正如Dori 和 Chandler 强调,我们可以从三个主要标准来衡量编码效率及其构建、测试和发布系统:运行时间、构建时间,当然还有人工时间。

如果你还没看 Chandler 的演讲,建议大家可以抽时间了解一下。他在演讲中展示了一个 C++11 移动语义的有趣测试用例。如果你想了解更多移动语义的相关内容,链接中的内容会很有帮助。不过,如果对你来说,这个内容太过简单,你可以将它推荐给身边初学的朋友。

构建时间和运行时间

在这里插入图片描述
运行时间的概念简单明了。我们都知道这是在编写计算机程序或算法的时候需要考虑的问题。构建时间也很重要,甚至极为关键。但大部分人只有在首次接触大规模代码库时才意识到这一点。等待构建完成纯粹是浪费时间。试想一下,6 名工程师一起等待一个 10 分钟的构建,相当于浪费了 60 分钟的工程师时间。在这期间,他们改进、分析代码的能力完全被搁置,或者说被限制。另外,这段浪费的等待时间还要乘以代码在一天、一周、一个月内的构建次数……这浪费了多少人类时间!接下来,我们将用一个新的方案解决刚刚说的等待问题,让你在行业竞赛中始终保持领先。

当然,构建和运行时间之间需要权衡。要减少运行时间,我们需要使用编译器优化,以生成更高效的代码。且现在的编译器在代码优化方面做得很好,但这当然要付出代价——构建时间增加。

用于代码优化的 gcc 编译命令如下(点击链接,查看 Clang 优化)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值