Почему ваш процессор на 100% на самом деле простаивает: всё упирается в память
It's the Memory Latency, Stupid
Когда загрузка CPU показывает 100%, это не значит, что он что-то делает: современный процессор может простаивать, ожидая данные из RAM. Автор на примере GROUP BY в ClickBench (99 млн строк, ~17 млн уникальных UserID) показывает, что наивная хеш-таблица заставляет CPU 50% времени ждать память и только 16% — выполнять операции. Разбиение ключей на 4096 партиций (radix partitioning) уменьшает рабочие хеш-таблицы, умещает их в кэш и сокращает время запроса с 3,6 до 2,7 секунды.
Это говорит нам о том, что 50,1% времени CPU не мог ничего делать, потому что ждал память! И только 16,1% времени CPU действительно выполнял операции.
- boricj
На работе я работаю с другой командой, которая вовсю использует передачу сообщений, виртуальные методы C++ в глубоко вложенных иерархиях классов, большие DOM и готовые контейнеры C++ STL... на STM32MP1, где стоит Cortex-A7 с последовательным выполнением и жалкий объём кэша.
С другой стороны, в моей команде я написал свои собственные контейнеры C++ STL, которые выделяют память inline, библиотеки обработки в стиле SAX и пул объектов со связями, использующими индекс+поколения, как в видеоиграх 2000-х... на STM32H5 с менее чем мегабайтом RAM.
«Механическая симпатия» кажется людям, которым я это демонстрирую, утраченным искусством... и мне пришлось продемонстрировать первой команде с цифрами бенчмарков, что я не буду узким местом между нами на порядки величин.
- happyPersonR
Респект автору, выглядит связно.
Мне нравятся flamegraph'ы
Я знаю, что люди используют perf, чтобы помогать их генерировать
Но в будущем, раз уж LLM здесь, пусть агент проверяет ассемблер, PMU, а также смотрит, что вы делаете в ассемблере.
Мои 2 копейки, и удачного кодинга всем :)
- drivebyhooting
Мне кажется, представленное решение — это просто кластеризованный hashmap или, если хотите, «locality sensitive».
Всё равно не на порядки лучше.
- brcmthrowaway
https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
Кто-нибудь переписал это для 2026 года?