Числа, которые должен знать каждый разработчик
Времена доступа к памяти и хранилищам
- Обращение к кэшу 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]