Deleted Account
на локгвард
Aleksei
Без локгварда грустно
Aleksei
Если где-нибудь эксепшен вылетит, будет плохо
Deleted Account
Aleksei
Думаю, это сделает линкер
Aleksei
есть флаг вроде бы, забыл уже
mefest
использовать?
Evgenii
Не стрипать. А зачем?
mefest
это ещё как
http://www.cplusplus.com/reference/atomic/atomic/atomic/
тут пример вроде есть
Deleted Account
и юзать функционал
Aleksei
-Wl,-whole-archive вроде бы
Deleted Account
типа как делаеш бинарий а юзаеш его как либу
Evgenii
Deleted Account
Deleted Account
Nikita
Aleksei
там перечислить надо, что включать полностью
mefest
мне кажется он функции не удаляет даже если она нигде не вызываетяс
Nikita
сравните, что будет.
в одном случае получите
create destroy infix
в другом
create infix destroy
Nikita
side-effect-то будет, но unreferenced temporary будет сразу уничтожен
Nikita
и то же будет с локом
Deleted Account
=)
Deleted Account
ты можеш только её зохватить
Aleksei
Nikita
убери референс и посмотри на время жизни
Алдар
* не в скобочках должен быть?
Deleted Account
что за automatic storage
Deleted Account
mefest
Anonymous
ну вы знаете кто-то должен был сказать это
Anonymous
👌
Pavel
крутой вопрос :)
Pavel
я думаю для начала бы этим структурам вообще появится.
Pavel
да чтобы еще и без шанса загреметь за очередной патент =(
Крылатый
А были пропозалы?
Pavel
Они крайне кастомные. я не знаю таких которые бы работали "униврсально хорошо"
Pavel
а структура хэша которая только для трех тридов - это ок, конечно, но в STL довольно стремно такое тащить
Pavel
хотя признаться мне был бы интересен std::unorered_map где мьютекс стоит на рехаш, а далее гранулярные мьютексы на бакеты.
Pavel
+ там жесть с патентами, как я отметил выше.
Pavel
да говно это все
Pavel
да еще тормозное.
Pavel
spsc в бусте - оно ужасное, оно медленнее naive имплементации в десятки раз =(
Крылатый
Жестоко.
Pavel
о чем? там ссылка на десяток алгоритмов, spsc - тормозной.
Pavel
в тырнете - полно тестов, мои тесты дали примерно такое же впечатление.
Pavel
хотя я уточню, что для меня тормозной, у меня 10-100m действий в секунду.
Pavel
и даже очередь из того же Concurrent C++ 11 - работает лучше :)
Pavel
хотя она там тоже не все кейсы учитывает....
Pavel
а пифоманс хэшей, отдельная тема, вот есть крутая штука: https://probablydance.com/2017/02/26/i-wrote-the-fastest-hashtable/
Pavel
а libcds Хижинского крутая штука, почему его не втащить в проект, но для стандарта там все равно много особенностей.
Mikhail
Я помню была старая статья, вот такая - http://incise.org/hash-table-benchmarks.html
Mikhail
Там хуже бустового хеша был только ruby хэш :)
Pavel
угу, это напалм :)
Mikhail
Интересно их было бы сравнить сейчас
Pavel
хэши вообще дьявольщина.
Pavel
а когда тебе надо жесткие требования по времени выборки - вдвойне дьявольщина.
Pavel
да чистый конкурент штука очень специфичная, на мой взгляд
Pavel
нередко грамотно расставленные мутексы на обычном STL контейнере дают очень приличные результаты
Pavel
у меня тут тест завалялся
Pavel
std::map: 1.9 mega ops per second
tbb::concurrent_unordered_map: 1.7 mega ops per second
boost::unordered_map: 1.7 mega ops per second
boost::container::flat_map with preallocated elements: 3.6 mega ops per second
std::unordered_map C++11: 4.5 mega ops per second
std::unordered_map C++11 preallocated buckets: 8.3 mega ops per second
google:dense_hashmap preallocated buckets: 18.7 mega ops per second
std::vector preallocated: 18.8 mega ops per second
cyber
а чем flat map примечателен?
cyber
Тут вспомнил, пару дней назад был холивар на тему инвалидации итераторов при изменении контейнера, как реализовать и почему нет. Вспомнил про boost::container::stable_vector, который оставляет итераторы валидными.
Denis
Кэш юзается нормально
Mikhail
Т.е. вектор, но лист? :D
mefest
и вектор векторов
mefest
и вектор векторов вектора
Nikita
по чанкам порубили?
Square
О, канкаррент. Атомики завезли, бартера памяти тоже, можно и локфри канкаррент контейнеры
Anton
Народ а подскажите как грамотно добавить объект в std::map<int, A> еслиу меня есть функция которая создает unique_ptr на этот объект - pA? Emplace это же через вызов конструктора насколько я понимаю. Он не подходит?
Deleted Account
Deleted Account
и в конструктор закидуеш свой объект