Подскажите кстати по once_cell, есть ли разница между обычной инициализацией

статик переменной и Lazy, в том случае если во время работы программы будет постоянное большое кол-во обращений к этой переменной с разных потоков (больше 100к в секунду), Не будет ли при lazy инициализации, в дальнейшем, каждое обращение делать проверку на то, была ли уже эта переменная инициализирована? Тем самым замедляя работу программы.

7 ответов

5 просмотров

если проверка станет проблемой (что сомнительно, один atomic load + бранч), то можете хранить &'static T, после инициализации

static LAZY: Lazy<T> = Lazy::new(|| ...); ... let reference: &'static T = Lazy::force(&LAZY); // or let reference: &'static T = &*LAZY;

Rusty brain-Krasilnikov Автор вопроса

О круто, не знал про force, спасибо!

вафля'
static LAZY: Lazy<T> = Lazy::new(|| ...); ... le...

А я уж думал выкрутасы с MaybeUninit и Box::leak.

Rusty brain Krasilnikov
О круто, не знал про force, спасибо!

Да даже без force.. Lazy реализует Deref<Target = T>, поэтому можно получить ссылку

Rusty brain-Krasilnikov Автор вопроса
вафля'
static LAZY: Lazy<T> = Lazy::new(|| ...); ... le...

Но эти референсы же уже не статик получаются, их в каждом потоке значит создавать?

Rusty brain Krasilnikov
Но эти референсы же уже не статик получаются, их в...

Почему не статик? Ну да, в каждом потоке. Но только создание потока значительно дороже чем получение ссылки

Похожие вопросы

Обсуждают сегодня

всем привет. я правильно понимаю, что в телеграфе 4, если сессию указать у сообщения с коллбеком (кликнул на кнопку и установил сессию), то она не сохраняется?
Тимур
1
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Карта сайта