Chandler Carruth talk 总结

简介

Chandler Carruth算是我在CppCon上面最喜欢的一个老哥,他现在是在google的llvm组做编译器相关的工作,他的talk幽默风趣,并且喜欢说一些性能优化相关的东西,作为一个cpper,我是属于听见优化就走不动道的那类人,所以他的这些视频我都觉得收益良多。故尝试对他这几年在CppCon上的会议上的视频做一个简单的总结,顺便重新学习一下,毕竟常言道,温故而知新。(顺便一提,之前挺火的那个Carbon Language也是由他上台讲的)

CppCon 2014 Efficiency with Algorithms, Performance with Data Structures

视频地址:https://www.youtube.com/watch?v=fHNmRkzxHWs&t=1488s

这个演讲是他目前为止在CppCon上播放量最高的一期。其主旨主要是强调两点:

  • Efficiency with Algorithms
  • Performance with Data Structures

Carruth在这里把Efficiency解释如下:

  1. Improving efficiency involves doing less work
  2. An efficient program is one which does the minimum (that we're aware of) amount of work to accomplish a given task

也就说从时间复杂度的角度来进行分析,对于具体任务来说,影响效率的唯一因素就是算法的时间复杂度。至于performance with Data Structures,则是表示在给定时间复杂度的情况下,我们如何更快的完成任务。例如遍历一个序列的话,我们最好用数组而不是链表来存储,在这个专题下其实讨论的主要是尽可能保证高的cache命中率,毕竟访问main memory还是有点慢的(点名批评了std::list,std::map,std::unordered_map以及其他关联性容器)。在这里其实Carruth还建议了用开放地址法来实现hashtable,而不是开链法。

并且这个talk其实还产出了一句我非常喜欢的话:

C++ doesn't give you perfomance, it gives you control over permormance

待续

posted @ 2022-10-25 18:08  相隔半世  阅读(15)  评论(0编辑  收藏  举报