Linux内核在TCP方面使用链表,在进程调度方面使用RB树。
从算法效率的角度来看,这是有道理的。您将会一次又一次地收到一堆数据包,因此在列表末尾进行O(1)插入很好。
对于进程调度,完全公平调度程序使用红黑树,在选择任务时具有O(1)时间。
据我所知,这两者都没有以“平坦”的方式实现 - 链表是一堆带有指向其他节点的指针的节点,就像树一样。就我所知,这意味着这些结构的局部性应该很差。
从我所见过的情况来看,缓存区域常常比算法效率更加重要。
Linux所编写的数据集是否具有使这些结构的算法效率优于其他缓存效率的特点?
我是否误解了什么?有人进行过分析吗?