2026.1.12 - 2026.1.18 周报
这周做了一部分 https://github.com/CppTrainingHub/training-cpp 的题目,把计网的八股大概过了一遍。
看了几篇 https://www.computerenhance.com/ 里面关于性能优化的文章,学习了一下循环展开、打破并行依赖链、向量化等常规优化手段。
了解了 VIPT,硬件层面的优化手段,根据 cache 大小,修改组相联的路数,满足 Cache 总大小 / 路数 <= 页大小,来实现虚拟地址的低 pagesize 位中包含了 cacheline 的 set,使得取出 set 中的 cacheline 的 tag 可以和 mmu 虚拟地址转化并行进行。
了解了下 Python 3.11 引入的优化手段:Specializing Adaptive Interpreter,总结来说就是一个特化,当一个操作接受的参数一直是某个类型,次数达到了阈值,这个操作就会变成这个类型的特化版本,减少了运行时检查开销。
以及 Python 3.13 引入的 JIT,和 JVM 运行时的中间语言编译为机器码不同,Python 是在构建 CPython 的时候,提前将虚拟机的 operator,比如 BINARY_OP_MULTIPLY_INT、BINARY_OP_ADD_INT、BINARY_OP_SUBTRACT_INT 等操作的 C 代码编译为 .o 文件,运行时提取出里面的机器码,在使用正确的地址对他进行 patch,然后编译器运行这一段机器码。
看了下 C++ 的 constexpr 是如何编译期执行的,他就是遍历了 AST 树。
了解了下跑在虚拟机上的语言(Python)和编译为机器码的语言(Go),他们的 GC 实现原理,他们使用的算法(三色/引用计数),他们执行方式上的区别造成的 GC 实现上的区别是什么。
了解了下多线程真正的性能提升在哪里,如果我打破了循环依赖链,让指令可以完全并行,那么多线程是没有提升的,他的提升核心就在于在一些情况下,CPU 中的昂贵的计算单元 ALU 空闲了(缓存未命中),一个核心完全空转了(IO),这个时候线程的调度/切换就使得每个核的核心组件不至于空闲,这是多线程的真正提升。
上面这些有一部分总结了简单的博客,放在了 https://nv3ifu.github.io/
下周就是继续写题目,继续看计网八股,学下ebpf,写下内存泄露工具的项目.





