Latency: значения задержек, которые стоит знать каждому программисту

Все операции, выполняемые компьютером, занимают определённое время. Чем ниже уровень, на котором операция происходит, тем она быстрее, и наоборот. Например, работать с кешем процессора быстрее, чем с оперативной памятью. Она, в свою очередь, быстрее жёсткого диска.

Зная, сколько времени занимают те или иные операции, можно создавать более эффективные программы. В таблице представлены значения задержек для самых распространённых операций.

ОперацияВремя
Обращение к L1-кешу0.5 нс
Неверное предсказание перехода5 нс
Обращение к L2-кешу7 нс
(Раз)блокировка мьютекса25 нс
Обращение к оперативной памяти100 нс
Сжатие 1 KБ с помощью Zippy3 000 нс = 3 мкс
Отправка 2 KБ по сети с пропускной способностью 1 ГБ/с20 000 нс = 20 мкс
Произвольное чтение SSD150 000 нс = 150 мкс
Последовательное чтение 1 МБ из памяти250 000 нс = 250 мкс
Круговая задержка в пределах одного датацентра500 000 нс = 0.5 мс
Последовательное чтение 1 МБ из SSD*1 000 000 нс = 1 мс
Поиск дорожки на диске10 000 000 нс = 10 мс
Последовательное чтение 1 МБ с диска20 000 000 нс = 20 мс
Отправка пакета по пути Калифорния → Нидерланды → Калифорния150 000 000 нс = 150 мс

*предполагается использование SSD со скоростью 1 ГБ/с.

Перевод статьи «Latency numbers every programmer should know»