Ядро Linux использует связанный список для TCP и дерево RB для планирования процесса.
В терминах алгоритмической эффективности это имеет смысл. Вы будете получать кучу пакетов по одному, поэтому добавление O (1) в конце списка приятно.
При планировании процессов, Полностью справедливый планировщик использует дерево Red Black, с O (1) временем для выбора задач.
Насколько я знаю, ни одно из них не реализовано "плоским" способом - связанный список представляет собой кучу узлов с указателями на другие узлы, подобно дереву. Это означает, что местность для этих структур, насколько мне известно, должна быть плохой.
Из того, что я видел, местность кэшей часто перевешивает алгоритмическую эффективность.
Есть ли что-то о наборе данных, который запрограммирован для Linux, что делает алгоритмическую эффективность этих структур перевесом эффективности кэша других?
Я что-то не понимаю? Кто-нибудь профилировал?