по времени займёт, ибо и там и там проверка, просто в одном случае паника, а в другом подстановка дефолтного значения.
Но пока что всё выглядит так, будто unwrap_or() работает в 2 раза медленнее...
покажи свой бенчмарк но заранее предупреждаю, что мерить такие вещи редко бывает полезно
Ты спрашиваешь херню. Ты уверен что у тебя проблемы с производительностью из-за анврапа?
В коде поменялось только это
https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call мб? > The function will always be called and potentially allocate an object acting as the default.
Да не должно быть, там захардкоженный usize как дефолт
Если в твоём бенчмарке паники нет то я так понимаю ветки None тоже
Там не бенчмарк как таковой, а лаба переписанная с крестов. Есть вектор, в нём положительные числа. Изначально первым элементом вектора был 0, поэтому я это использовал при проверке, что всё извлечено. Сначала я сделал RIIR as is, постоянно анврапая. Сейчас этот ноль из начала вектора убрал, так как всё равно возвращается Option, а в некоторых местах пока что подоткнул с помощью unwrap_or(). И чот производительность упала в 2 раза... Там очень долгая числодробилка, мне это критично...
если критичен перф, то мб просто верни крестовый вариант?
ну значит перф тебе не критичен. Тогда рекомендую профайлер в руки взять и разницу посмотреть
Обсуждают сегодня