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

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

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

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

Операция Время
Обращение к L1-кешу 0.5 нс
Неверное предсказание перехода 5 нс
Обращение к L2-кешу 7 нс
(Раз)блокировка мьютекса 25 нс
Обращение к оперативной памяти 100 нс
Сжатие 1 KБ с помощью Zippy 3 000 нс = 3 мкс
Отправка 2 KБ по сети с пропускной способностью 1 ГБ/с 20 000 нс = 20 мкс
Произвольное чтение SSD 150 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»