A Fast 64-Bit Date Algorithm (30–40% faster by counting dates backwards) 🔥 Горячее
Новый алгоритм преобразования дней с эпохи 1970-01-01 в дату (год, месяц, день) для 64-бит UNIX-времени работает на 30–40% быстрее предыдущего лидера (Neri-Schneider 2021) и в 2.4 раза быстрее Boost (2012). Он охватывает ±1.89 трлн лет, использует всего 4 умножения (вместо 7+), и оптимизирован для x64/ARM. Бенчмарки на Intel x64 и Apple M4 Pro: ~27 циклов (4M + 15B) против 40 и 51 у предшественников.
Ключевые идеи: подсчёт лет назад (rev = D_SHIFT - days) убирает промежуточные шаги; пропуск day-of-year с year-modulus-bitshift (yrs % 4 * 512 + shift - ypt) вместо деления; Julian Map (cen = (rev * C1) >> 64; jul = rev + cen - cen/4) ускоряет правила високосных 100/400 лет, экономя 2 умножения. Псевдокод: корректировка эпохи, 4 красных умножения (C1/C2/C3/782432), зелёные "бесплатные" на x64 (shift/LEA), выход day/month/year с bump для янв/фев. Код на C++ — open source (BSL-1.0).
Комментарии (86)
- Новый алгоритм конвертации дат в григорианский календарь даёт 30–40% прирост скорости за счёт обратного подсчёта лет и снижения умножений (4 вместо 7+).
- Сравнения с ClickHouse (таблицы поиска), Windows-эпохой (1601) и Unix-временем (без учёта високосных секунд); упоминания исторических календарей с 1 марта как началом года.
- Обсуждение оптимизаций (128-битные числа, constexpr, asm), долгосрочной точности (±1,89 трлн лет) и влияния приливного трения на будущие расчёты.
- Похвалы за подробный write-up, literate programming и open-source C++ код; предложения для наносекунд и микроконтроллеров.
Hypervisor 101 in Rust
Введение в гипервизоры на Rust
1. Введение
- Предварительные требования
- Цели курса
- Мотивация
- Как достигаются цели
- Что вы изучите
- Дизайн фаззера
- Дизайн гипервизора
- Что этот курс НЕ охватывает
- Демо: фаззер на основе гипервизора
- Зачем использовать гипервизор для фаззинга
- Приложения UEFI
- Язык Rust
- Классификация гипервизоров
- Гипервизор vs хост, ВМ vs гость
- Типы гипервизоров
2. Настройка и цикл работы гипервизора
- Включение: активация аппаратной виртуализации
- Настройка: создание структуры контекста гостя
- Переключение: запуск в гостевом режиме
- Возврат: переход обратно в режим хоста
- Обработка: эмуляция событий
- Цели и упражнения главы
- Тестирование с Bochs
- Подготовка к упражнениям
- E#1: Включение VMX/SVM
- E#2: Настройка VMCS/VMCB
- E#3: Конфигурация гостевого состояния
- Причины VM-выходов
- Альтернативный дизайн гипервизора
3. Виртуализация памяти
- Терминология
- Традиционная страничная организация x64
- Вложенная страничная организация
- Связь с гипервизором
- Ошибки страниц во вложенной организации
- Структурные элементы вложенной организации
- Сравнение традиционного и вложенного подходов
- Цели и упражнения главы
- E#4: Включение вложенной организации
- E#5: Построение структур и трансляция адресов
- E#6: Реализация copy-on-write и быстрого восстановления памяти
- Продвинутые темы
4. Интроспекция ВМ для фаззинга
- Проблема 1: Ненужное выполнение кода
Комментарии (13)
- Пользователи высоко оценивают качество и полезность материалов по созданию гипервизора и операционной системы, связывая их с предыдущей работой автора.
- Высказывается критика в адрес формата материалов (Markdown/HTML) и пожелание иметь возможность скачивания в PDF для архивации.
- Отмечается, что материал представляет собой конспект/слайды курса и может быть сложен для понимания без предварительных знаний или посещения занятий.
- Возникает дискуссия о практической ценности таких материалов для самообразования без наличия глубоких базовых знаний.
- Упоминается растущий интерес к теме создания гипервизоров, о чём свидетельствует частое появление подобных руководств.
- Предлагаются технические решения для создания PDF-версии (например, печать в PDF через браузер).
- В комментариях присутствует лёгкое обсуждение терминологии (значение слова "hypervisor") и личный опыт работы в данной области.