Числа, которые должен знать каждый разработчик

Времена доступа к памяти и хранилищам

  • Обращение к кэшу L1: 0.5 нс
  • Обращение к кэшу L2: 7 нс
  • Обращение к основной памяти: 100 нс
  • Чтение 1 МБ последовательно из основной памяти: 250,000 нс
  • Произвольный доступ к жесткому диску: 10,000,000 нс
  • Чтение 1 МБ последовательно с жесткого диска: 20,000,000 нс[3]

Эти цифры показывают, насколько критична оптимизация работы с памятью и дисками для производительности программ.

Сетевые задержки

  • Пересылка 2 КБ по сети со скоростью 1 Гбит/с: 20,000 нс
  • Передача сообщения туда/обратно в одном дата-центре: 500,000 нс
  • Передача пакета из Калифорнии в Нидерланды и обратно: 150,000,000 нс[3]

Понимание сетевых задержек важно при разработке распределенных систем.

Другие важные числа

  • Ошибка при предсказании условного перехода: 5 нс
  • Открытие/закрытие мьютекса: 25 нс
  • Сжатие 1 КБ быстрым алгоритмом: 3,000 нс[3]

Эти цифры помогают оценивать эффективность различных операций в коде.

Степени двойки

Разработчикам также полезно помнить степени двойки: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024[31]. Они часто встречаются при работе с памятью, файловыми системами и другими аспектами разработки.

Коды ошибок HTTP

  • 403: доступ запрещен
  • 404: страница не найдена
  • 500: внутренняя ошибка сервера
  • 503: сервис недоступен[31]