设计取舍
01 和 02 沿着主线把代码走完了,这一部分不再看新代码,而是把前面零散提到的「为什么这样做」「代价是什么」放在一起看。只有一章:
- 取舍与对比:线程局部指针和通道各要付出什么,实测一百万项的每项开销和分配次数;0.3.6 修掉的 #106、#107 为什么是同一类问题,修法为什么选了一句编译期的
break;proc-macro 改写语法的三个代价;和unfold、通道、async-fn-stream、futures-async-stream、原生gen/async gen块的对比,其中能在本机跑的都跑了一遍。
flowchart TB goal["在 stable 上写 yield"] --> how1["值怎么递:线程局部指针"] goal --> how2["yield 怎么认:proc-macro 改写"] how1 --> gain1["零分配、零同步"] how1 --> cost1["正确性压在宏的规则上"] how2 --> gain2["stable 1.65 就能用"] how2 --> cost2["只认字面位置,报错是编译器原话"] cost1 --> holes["0.3.6 修的两个洞"]
💬 关联讨论
发起讨论加载中...