170 похожих чатов

Когда могут быть нужны интрузивные контейнеры, напр. как в Boost.Intrusive,

напр. тамошний интрузивный список?

В доке своей в when to use они пишут:

* additional memory management should be avoided.
...
* exception safety, especially the no-throw guarantee, is needed.
* it's important to achieve a well-known worst-time system response.
* localization of data (e.g. for cache hit optimization) leads to measurable effects.

Но это звучит как красноглазие, а не юзкейсы. Это все варианты «у нас есть алгоритм, который работает только со списками [при этом мы никак не можем заменить списки на что-либо другое], и нам жесть-жесть как надо его оптимизировать, и мы решили, что отсутствие кэш-локальности (или аллокации [которые мы также никакими другими способами уменьшить не может]) — вот где наши беды»
Есть ли у интрузивных контейнеров как в Boost.Intrusive популярные юзкейсы? Где мы вот ими можем заменить что-то и у нас мгновенно производительность +100500%?

И правильно ли я понимаю, что в связи с появлением в стандартной библиотеке полиморфных аллокаторов интрузивные контейнеры как в Boost.Intrusive больше не нужны?

19 ответов

53 просмотра

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Eoan-Ermine Автор вопроса

Не говорю про lockfree. Ведаю, что интрузивные lockfree контейнеры популярны. Лишь про интрузивные контейнеры как в Boost.Intrusive. То есть, не-lockfree интрузивные контейнеры. Мне хочется для себя подтвердить или опровергнуть утверждение „не-lockfree интрузивные контейнеры нафиг не нужны“. Интересно стороннее мнение, может, кто может что сказать

Eoan Ermine
Не говорю про lockfree. Ведаю, что интрузивные lo...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Где-то в яндексе делали глобальный список логгеров или чего-то похожего на интрузивных контейнерах - без аллокаций.

в файберах (стекфул корутинах) в тредпулах (для интрузивных задач в буст асио например) и тд когда тебе нужно переподвешивать элементы и ты хочешь то что это нода хранить прямо в типе собственно в отличие от обычных списков интрузивные списки это действительно полезная штука

в-общем вопрос некорректный скорее наоборот задавай вопрос зачем нужны обычные списки

Yalokin Kononov
lru cache?

Нет. Им просто нужно было регистрировать статические переменные в каком-то общем пуле, но без аллокаций

просто ты это не пишешь, это на уровне языка

Eoan-Ermine Автор вопроса
Alexander Karaev
Нет. Им просто нужно было регистрировать статическ...

Но могли бы так же успешно взять стандартный pmr::list (по крайней мере, если бы жили во время C++17+), получается, в этом случае

Yalokin Kononov
просто ты это не пишешь, это на уровне языка

ну не совсем, если ты пишешь какой-нибудь примитив синхронизации, то ты, возможно, будешь делать интрузивный список авейтеров

Eoan Ermine
Но могли бы так же успешно взять стандартный pmr::...

А где бы он аллоцировал? Заранее неизвестно, сколько будет объектов, они раскиданы по TU

Алексей Склемин
Хорошо я до сих пор в 11 живу)))

А какой смысл жить в 11, а не в 14? Реально есть что в 14 стало хуже?

Максим Вельгач
А какой смысл жить в 11, а не в 14? Реально есть ч...

Не, я просто маленький и до 14 не дотянул, в мой крошечный мозг не влезает даже for(a:b){cout<<a}

Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта