habr.com: Числа, которые должен знать каждый программист

Чтобы было понятно, на чём следует концентрироваться при оптимизации, слайд из доклада «Создание программных систем в 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 мин.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s