Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

基本数据结构

四个"看起来谁都会"的家伙。但实际上,它们是你 90% 工程性能问题的胜负手。

warning

别把"基本"当成"浅"。动态数组的扩容为什么是 2 倍、map 的渐进 mortality、为什么年度旗舰 Go 比 std::vector 慢十倍、为什么 std::list 几乎从大型项目绝迹——这些问题的答案都需要把"CPU 形态 + 运行时内存模型 + 算法复杂度"三层同时拉起来。

这一节的目标

四个章节走完,你应当具备:

  • 一段代码看一眼能说出"这步在硬件上是 L1 / L2 / L3 / DRAM 哪一档";
  • 一道需求拿到手能给出"用 vector 还是 list,为什么",不再凭语感;
  • 会设计一个针对 cache line 大小的字节紧排结构,理解 padding 抢哪几个字节;
  • 会查 defrag 在 STL/Java/CPython 里为什么不自动做的来由。

子章节