Пост канала
🥶 Холодный расчет: #[cold] и likely Компилятор Rust (LLVM) очень умный, но иногда мы знаем о поведении программы больше, чем он. Мы можем подсказать ему, какая ветка кода будет выполняться чаще. 1. Атрибут #[cold] Идеально для обработки ошибок. Вы говорите компилятору: "Сюда мы будем заходить крайне редко". Компилятор сдвинет этот код в "дальний угол" бинарника, чтобы "горячий" путь шел линейно в памяти (это улучшает работу кэша инструкций и BPU). #[cold] // <-- Подсказка fn handle_fatal_error() { // Логирование, паника, сложная логика... } fn process(data: &str) { if let Err(_) = parse(data) { handle_fatal_error(); // Компилятор знает, что это маловероятно return; } // Happy path идет дальше линейно } 2. likely / unlikely (Nightly / Crates) В стабильном Rust пока нет std::intrinsics::likely, но есть крейт likely или хаки. Это прямая инструкция процессору через LLVM. // С крейтом `likely` if likely(x > 0) { // Оптимизатор будет строить код так, // будто это условие почти всегда true } Используйте #[cold] для ошибок и граничных случаев. Это стабильно, бесплатно и делает код чище. #rust #optimization #llvm #hints 👉 @channel_rust_lib
Открыть в MAX- Просмотры
- 399
- ER
- 2,0%
- Реакции
- 8