STL大牛Stephan T. Lavavej访谈

蓝星最熟悉STL的人:Stephan T. Lavavej

STL大牛人Stephan T. Lavavej在CppCon 2020上做了一个十分精彩的演讲,内容涵盖了integer comparison functions, constexpr algorithms, uniform container erasure, atomic_ref和span等,这些主题都搭配了完整的示例程序(而不是代码片段),开发者可以通过这些例子来深入理解最新的STL实现背后的原理。
在Stephan演讲的结尾,观众提出了很多感兴趣的问题,因为时间的关系,他只回答了其中的几个比较典型的问题。下面我们具体来看看他怎么说。

Q: 为什么要压缩PR(Squash pull requests),而不是简单的合并它们?

A: 我们之所以选择这种提交方式,是因为它可以大大简化分支的历史,因为每一次压缩的commit等同于一次PR。你仍然可以在仓库中查看到所有PR的历史记录。如果合并的话,将产生高度非线性化的提交历史记录(这会增加查看代码变更细节的难度,在MSVC的内部仓库里充满了这种非线性的合并提交,这为查看代码变更带来了很大的困难)。
大多数的非压缩合并都是一些不那么令人感兴趣的部分,它们基本上是一些代码Review的反馈,以及开发阶段的Bug修复。对于非常不常见的情况,我可以想象将PR序列化为一系列的commit,然后将其重定向并合并到默认分支,我们需要通过策略临时启用该分支,但通常PR中留下这个历史记录就足够开发者查看了。

Q: 关于atomic_ref,为什么不指定宽松的访问权限呢?

A: 我的理解是,更宽松的访问控制仍然比普通操作更加耗费资源。
例如,在用于MSVC的x86/x64平台上,原子增量由_InterlockedIncrement实现,即使你要求宽松访问,它也会提供完整的顺序一致性。我听说这大约花费10-100个周期,而普通的增量是半个周期或更短。即使在ARM/ARM64上,也有_Meow_nf个内在函数(”no fence”)可以放宽,我相信与普通操作相比,它们仍然隐含着额外的成本。

Q: 你认为将STL开源会提高STL的团队的开发效率吗?有担心过与第三方贡献者的合作会带来太多的开销吗?

A: 这是一个很好的问题。这是我们在开源过程中考虑最多/最为担心的事情之一。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拓扑梅尔-漫漫开发路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值