Deleted Account
на локгвард
Aleksei
Без локгварда грустно
mefest
на локгвард
может сразу на atomic?_))
Aleksei
Если где-нибудь эксепшен вылетит, будет плохо
Deleted Account
Aleksei
Думаю, это сделает линкер
Aleksei
есть флаг вроде бы, забыл уже
mefest
использовать?
Evgenii
Не стрипать. А зачем?
Deleted Account
Не стрипать. А зачем?
может он хочет свой бинарий потом открывать другим бинарём
mefest
это ещё как
http://www.cplusplus.com/reference/atomic/atomic/atomic/ тут пример вроде есть
Deleted Account
и юзать функционал
Aleksei
-Wl,-whole-archive вроде бы
Deleted Account
типа как делаеш бинарий а юзаеш его как либу
mefest
и юзать функционал
тогда все либы бы убирались как неиспользуемая функция
Deleted Account
Звучит довольно криво
ну это си стайл
Aleksei
там перечислить надо, что включать полностью
mefest
мне кажется он функции не удаляет даже если она нигде не вызываетяс
Nikita
сравните, что будет. в одном случае получите create destroy infix в другом create infix destroy
Evgenii
ну это си стайл
А почему не собрать либу?
Nikita
side-effect-то будет, но unreferenced temporary будет сразу уничтожен
Nikita
и то же будет с локом
Deleted Account
А почему не собрать либу?
потому что не ты это решаеш =
Deleted Account
=)
Deleted Account
ты можеш только её зохватить
mefest
и то же будет с локом
я же пример привел с -O2 там не выкинул
Nikita
я же пример привел с -O2 там не выкинул
так в том примере лок вполне себе referenced
Aleksei
side-effect-то будет, но unreferenced temporary будет сразу уничтожен
потому что нет automatic storage переменной, вот и удаляется сразу
Nikita
убери референс и посмотри на время жизни
Алдар
* не в скобочках должен быть?
Nikita
потому что нет automatic storage переменной, вот и удаляется сразу
так об этом и речь, в примере ранее object_mutex на входе в блок создавался не привязываясь к автоматическому хранилищу
Deleted Account
что за automatic storage
Aleksei
что за automatic storage
http://en.cppreference.com/w/cpp/language/storage_duration
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
и в конструктор закидуеш свой объект