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解释如下:
- Improving efficiency involves doing less work
- 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
待续