Чтобы было понятно, на чём следует концентрироваться при оптимизации, слайд из доклада «Создание программных систем в Google и его уроки»:
Операция | Заметки | Задержка | Масштаб |
---|---|---|---|
Обращение к кэшу L1 | L1 кэш — ближайший кэш памяти расположенный на подложке процессора. Обычно их два — L1i кэш для инструкций, и L1d — кэш для данных. | 0.5 нс | 1 секунда |
Ошибка при предсказании условного перехода | Во время исполнения программы центральный процессор пытается предсказать следующую инструкцию. Если предсказание оказалось верным на протяжении нескольких инструкций, ЦП делает запись в специальной таблице об этом. Если предсказание оказалось неверным, запись о верности предсказания стирается и статистика накапливается снова. А исполнение кода замедляется. | 5 нс | 10 сек. |
Обращение к кэшу L2 | Кэш 2-ого уровня расположен дальше, чем кэш L1. Содержит и данные и инструкции. Если данных нет в L1-кэше, ЦП обращается к L2-кэшу. | 7 нс | 14 сек. |
Открытие/закрытие мьютекса | Механизм для управления доступа к одному ресурсу нескольких процессов или потоков. | 25 нс | 50 сек. |
Обращение к главной памяти | Если данные отсутствуют в L1-кэше и в L2-кэше, они извлекаются из основной памяти. На некоторых процессорах имеется еще и общий для всех ядер ЦП кэш 3-ого уровня. | 100 нс | 3 мин. 20 сек. |
Сжатие 1 Кб быстрым алгоритмом | Библиотека сжатия и распаковки данных Snappy написана в Google на C++. Используется в таких проектах Google как BigTable, MapReduce и проч. | 3,000 нс | 1 ч. 40 м. |
Пересылка 1Кб по сети со скоростью 1 Гб/с | 10,000 нс | 5 ч. 33 м. 20 сек. | |
Чтение 1 Мб последовательно из главной памяти | Чтение из главной памяти. | 250,000 нс | 5 дней 18 ч. 53 мин. 20 сек. |
Передача сообщения туда/обратно в одном дата-центре | 500,000 нс | 11 дней 13 ч. 46 мин. 40 сек. | |
Произвольный доступ к жёсткому диску | Если данные разбросаны по диску в произвольном порядке а не в соседних секторах. | 10,000,000 нс | 231 дней 11 ч. 33 мин. 20 сек. |
Чтение 1 Мб последовательно с жёсткого диска | Если данные расположены на жестком диске последовательно в соседних сектора. | 20,000,000 нс | 462 дней 23 ч. 6 мин. 40 сек. |
Передача пакета из Калифорнии в Нидерланды и обратно | С Западного побережья США в Европу и обратно. | 150,000,000 нс | 3472 дней 5 ч. 20 мин. |
- Взято из статьи на сайте habr.com
- Дополнено из статьи с DZone
- А вот красивая визуализация: по годам. Можно двигать ползунок и смотреть, как менялось время доступа в разные годы начиная с 1990 г. по 2019 г.
Ссылки по теме
- Полезные для программиста сведения о скорости света и времени