⚙️ Почему процессор ждёт память: разбор от Algorithmica
Обход массива подряд и переходы по цепочке указателей могут сильно отличаться по скорости. При pointer chasing адрес следующего элемента становится известен только после чтения предыдущего - процессору приходится ждать данные.
В разделе RAM & CPU Caches разбирают:
* задержки доступа к кешам и оперативной памяти;
* влияние порядка чтения данных на скорость;
* кеш-линии и предварительную загрузку — prefetching;
* параллельные обращения к памяти;
* размещение и упаковку структур данных.
По ссылке - глава Memory Latency с примером на C++, измерениями и графиками. Полезно для понимания того, почему код с небольшим числом операций всё равно может тормозить.
https://en.algorithmica.org/hpc/cpu-cache/latency/
Post #1199
1.05K