@ProCxx

Страница 695 из 2477
Tema
23.03.2017
10:39:13
это хор

mefest
23.03.2017
10:42:08
https://godbolt.org/g/yVKPKS

Aleksei
23.03.2017
10:51:25
оптимизатор может лок выкинуть
http://stackoverflow.com/a/27741897/2814617 Со ссылкой на пункт стандарта

mefest
23.03.2017
11:02:47
http://stackoverflow.com/a/27741897/2814617 Со ссылкой на пункт стандарта
а вы читали что там пишут? Компилятору не разрешается оптимизировать автоматический объект, у деструкторов или инициализации которого есть побочные эффекты

Google
Aleksei
23.03.2017
11:03:00
ну да

mefest
23.03.2017
11:03:09
в данном случае guard низзя выкидывать

Aleksei
23.03.2017
11:03:19
Я про это же

mefest
23.03.2017
11:03:47
ой, извините, перепутал собеседников

Tema
23.03.2017
11:03:49
вот и збс

пойду свой код перепишу

на локгвард

Aleksei
23.03.2017
11:04:44
Без локгварда грустно

mefest
23.03.2017
11:04:48
на локгвард
может сразу на atomic?_))

Антон
23.03.2017
11:04:55
а оптимизатор съедает неиспользуемые функции?

Aleksei
23.03.2017
11:05:00
Если где-нибудь эксепшен вылетит, будет плохо

Tema
23.03.2017
11:05:11
Aleksei
23.03.2017
11:05:20
Google
Антон
23.03.2017
11:05:34
Думаю, это сделает линкер
а как сделать шоб не съел

Aleksei
23.03.2017
11:05:47
есть флаг вроде бы, забыл уже

mefest
23.03.2017
11:06:02
Evgeniy
23.03.2017
11:06:30
а как сделать шоб не съел
Не стрипать. А зачем?

Tema
23.03.2017
11:06:50
Не стрипать. А зачем?
может он хочет свой бинарий потом открывать другим бинарём

mefest
23.03.2017
11:06:51
это ещё как
http://www.cplusplus.com/reference/atomic/atomic/atomic/ тут пример вроде есть

Tema
23.03.2017
11:06:53
и юзать функционал

Aleksei
23.03.2017
11:07:24
а как сделать шоб не съел
-Wl,-whole-archive вроде бы

Tema
23.03.2017
11:07:28
типа как делаеш бинарий а юзаеш его как либу

Evgeniy
23.03.2017
11:07:42
mefest
23.03.2017
11:07:47
и юзать функционал
тогда все либы бы убирались как неиспользуемая функция

Tema
23.03.2017
11:07:50
Звучит довольно криво
ну это си стайл

Aleksei
23.03.2017
11:08:05
там перечислить надо, что включать полностью

mefest
23.03.2017
11:08:10
мне кажется он функции не удаляет даже если она нигде не вызываетяс

/dev
23.03.2017
11:08:52
сравните, что будет. в одном случае получите create destroy infix в другом create infix destroy

Evgeniy
23.03.2017
11:09:13
ну это си стайл
А почему не собрать либу?

/dev
23.03.2017
11:09:17
side-effect-то будет, но unreferenced temporary будет сразу уничтожен

и то же будет с локом

Google
Tema
23.03.2017
11:09:41
А почему не собрать либу?
потому что не ты это решаеш =

=)

ты можеш только её зохватить

mefest
23.03.2017
11:10:54
и то же будет с локом
я же пример привел с -O2 там не выкинул

/dev
23.03.2017
11:13:11
я же пример привел с -O2 там не выкинул
так в том примере лок вполне себе referenced

Антон
23.03.2017
11:13:13
void*(std::stack<int32_t>*)

Aleksei
23.03.2017
11:13:19
side-effect-то будет, но unreferenced temporary будет сразу уничтожен
потому что нет automatic storage переменной, вот и удаляется сразу

Антон
23.03.2017
11:13:20
void*(std::stack<int32_t>*)
как правильно будет

/dev
23.03.2017
11:13:23
убери референс и посмотри на время жизни

Антон
23.03.2017
11:13:27
указатель на функцию

std::map<std::string, void*(std::stack<int32_t>*)> если точнее

Aldar
23.03.2017
11:14:16
* не в скобочках должен быть?

Антон
23.03.2017
11:15:30
в скобочках

ору, я определил глобальную переменную в хедере. не работает.

/dev
23.03.2017
11:18:38
потому что нет automatic storage переменной, вот и удаляется сразу
так об этом и речь, в примере ранее object_mutex на входе в блок создавался не привязываясь к автоматическому хранилищу

Aleksei
23.03.2017
11:20:36
что за automatic storage
http://en.cppreference.com/w/cpp/language/storage_duration

Mr.
23.03.2017
12:29:14
ну вы знаете кто-то должен был сказать это

Google
Mr.
23.03.2017
12:29:50
?

Alexander
23.03.2017
12:31:07
Кто-нибудь в курсе, когда в стандарте могут появится Concurrent data structures?

Pavel
23.03.2017
12:31:17
крутой вопрос :)

я думаю для начала бы этим структурам вообще появится.

да чтобы еще и без шанса загреметь за очередной патент =(

Alexander
23.03.2017
12:32:37
А были пропозалы?
хз - я на этот вопрос не парсил пропозалы

Pavel
23.03.2017
12:32:45
Они крайне кастомные. я не знаю таких которые бы работали "униврсально хорошо"

а структура хэша которая только для трех тридов - это ок, конечно, но в STL довольно стремно такое тащить

хотя признаться мне был бы интересен std::unorered_map где мьютекс стоит на рехаш, а далее гранулярные мьютексы на бакеты.

+ там жесть с патентами, как я отметил выше.

Pavel
23.03.2017
12:34:36
да говно это все

да еще тормозное.

Alexander
23.03.2017
12:34:47
да еще тормозное.
аааа, вот оно что :)

Надо Хижинскому как-нибудь сказать об этом)

Pavel
23.03.2017
12:35:05
spsc в бусте - оно ужасное, оно медленнее naive имплементации в десятки раз =(

Дед Пегас
23.03.2017
12:35:23
Жестоко.

Pavel
23.03.2017
12:35:30
о чем? там ссылка на десяток алгоритмов, spsc - тормозной.

Google
Pavel
23.03.2017
12:35:43
в тырнете - полно тестов, мои тесты дали примерно такое же впечатление.

хотя я уточню, что для меня тормозной, у меня 10-100m действий в секунду.

и даже очередь из того же Concurrent C++ 11 - работает лучше :)

хотя она там тоже не все кейсы учитывает....

а пифоманс хэшей, отдельная тема, вот есть крутая штука: https://probablydance.com/2017/02/26/i-wrote-the-fastest-hashtable/

а libcds Хижинского крутая штука, почему его не втащить в проект, но для стандарта там все равно много особенностей.

Mikhail
23.03.2017
12:41:32
Я помню была старая статья, вот такая - http://incise.org/hash-table-benchmarks.html

Там хуже бустового хеша был только ruby хэш :)

Pavel
23.03.2017
12:42:12
угу, это напалм :)

Mikhail
23.03.2017
12:42:14
Интересно их было бы сравнить сейчас

Pavel
23.03.2017
12:42:31
хэши вообще дьявольщина.

а когда тебе надо жесткие требования по времени выборки - вдвойне дьявольщина.

да чистый конкурент штука очень специфичная, на мой взгляд

нередко грамотно расставленные мутексы на обычном STL контейнере дают очень приличные результаты

у меня тут тест завалялся

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
23.03.2017
13:04:12
а чем flat map примечателен?

Тут вспомнил, пару дней назад был холивар на тему инвалидации итераторов при изменении контейнера, как реализовать и почему нет. Вспомнил про boost::container::stable_vector, который оставляет итераторы валидными.

Denis
23.03.2017
13:06:59
Кэш юзается нормально

Страница 695 из 2477