
Alexander
17.03.2017
16:59:53
а что такое антикафе?

Alex Фэils?︙
17.03.2017
17:00:14

Alexander
17.03.2017
17:00:30
аааа, прикольно :)

Google

Alexander
17.03.2017
17:01:33
сейчас напишу на своей локальной машинке бенч по-быстрому. Там и оценим и кешируемость и так далее.

Daniil
17.03.2017
17:02:36

Mikhail
17.03.2017
17:04:24

Vyacheslav
17.03.2017
17:07:35
В споре рождается истина

Gregory
17.03.2017
17:11:53

Alexander
17.03.2017
17:12:10
gcc и clang

Сергей
17.03.2017
17:12:26

Alexander
17.03.2017
17:12:57

Gregory
17.03.2017
17:12:58
что оно будет медленее оно ясно, но насколько

Alexander
17.03.2017
17:13:04

Kirill
17.03.2017
17:13:33
По поводу питерской встречи. 21 марта в офисе оракл будет встреча с++ спб юзер групп. Можно туда завалиться и сделать спп чат аферпати

Сергей
17.03.2017
17:15:46
что оно будет медленее оно ясно, но насколько
в принципе если аллоцировать вектор в куче + аллокатор будет выделять место под data рядом, небольшой объём поместится в кэш линию) а вот если вектор на стеке, да ещё мы передаёт итераторы какому нибудь алгоритму, который для разыменования будет ходить в другой стекфрейм..

Google

Alexander
17.03.2017
17:16:56

Сергей
17.03.2017
17:17:21

Alexander
17.03.2017
17:20:16

Сергей
17.03.2017
17:21:28

Alexander
17.03.2017
17:21:48

Сергей
17.03.2017
17:22:06

Gregory
17.03.2017
17:24:30
что может сломаться я хз, по поводу просадки пефоманса еще и из-за кеша - ну да.
сам вектор может быть в одном месте, данные во втором а наш итератор с указателем на вектор в третьем.
с текущими итераторами понятное дело что этого третьего звена ввиде адреса на сам вектор нет, ну и минус одно место по кешу
этот кейс по сути:
- вектор является полем класса обьект которого сконструирован хер знает где в начале (мб на стеке в каком нибудь main)
- а потом мы где то далеко по стеку начинаем по нему бегать таким итератором )
ну и забегаем постоянно в начало стека к нашему вектору )

Andrei
17.03.2017
17:32:21

Alex Фэils?︙
17.03.2017
17:34:17

Alexander
17.03.2017
17:39:59
http://pastebin.com/ypYyYy04
результаты (gcc 6.2.0 -O3): стандартные итераторы - average 650 ms, оффсет итераторы - average 740 ms
так что вопрос о перфомансе как бы и не стоит сильно

Vyacheslav
17.03.2017
17:46:20

Andrei
17.03.2017
17:47:06

Google

Andrei
17.03.2017
17:47:45

Denis
17.03.2017
17:47:54

Alexander
17.03.2017
17:48:16
нифига себе не стоит. +15%
да, 15 процентов это неплохо, абсолютно согласен. Но с другой стороны мы получаем итераторы, которые не инвалидируются при реаллокации
хотя я при выборе между этими двумя выберу скорость

Andrei
17.03.2017
17:48:41
Да, если не хочется ивалидировать храните индекс.
Но вообще идея в том, что если писать реально заботясь о скорости, то мы СНАЧАЛА сделаем reserve нужного размера и больше никогда в жизни не будем перевыделять память в векторе.

Denis
17.03.2017
17:50:02
Если мы не знаем заранее, сколько нужно памяти, это не сработает
А если знаем, можно использовать array

Andrei
17.03.2017
17:52:08
Речь не о статически известном количестве памяти, а об иммутабельном количестве памяти.

Andrei
17.03.2017
17:52:29
Разные вещи.

Denis
17.03.2017
17:52:43

Andrei
17.03.2017
17:52:55
Еще раз внимательно прочитай.

Denis
17.03.2017
17:53:11
Или в вектор складываются результаты вычислений, количество которых заранее неизвестно

Andrei
17.03.2017
17:53:30
ты из файла прочитал число и выделил сразу нужное количество памяти.
Где нельзя заранее выделить достаточно памяти.

Denis
17.03.2017
17:53:58

Google

Denis
17.03.2017
17:54:35

Andrei
17.03.2017
17:56:48
Количество файлов — это вроде бы одна переменная :)

Denis
17.03.2017
17:57:23
Ок, список файлов

Andrei
17.03.2017
18:01:25
Зачем тебе _одновременно_ весь список? Ты его наверное вывести хочешь, или по сети передать. Для этого весь список в памяти не нужен. А если по какой-то странной причине нужен — то есть разумное ограничение сверху.

Сергей
17.03.2017
18:26:19
К чему спор если есть deque. Выбирайте размер chunk = размеру кэш линии и всё. В худшем случае будете потреблять немного больше памяти. Вполне разумная альтернатива

Gregory
17.03.2017
18:28:07
непонятно как скатились к теме правильного выбора контейнера под задачу

Denis
17.03.2017
18:28:17
У дека тоже итераторы ломаются

Сергей
17.03.2017
18:28:54

Admin
ERROR: S client not available

Gregory
17.03.2017
18:28:56
от темы "безопасных" итераторов вектора и насколько оно дорого

Сергей
17.03.2017
18:29:21

Gregory
17.03.2017
18:31:04
ну то что контейнеры над выбирать под задачу оно как то очевидно - разве не?

Сергей
17.03.2017
18:31:40

Gregory
17.03.2017
18:32:34
меня идея с "безопасными" итераторами зацепила исключительно в контексте: а можно ли дать такое джунам )
т.е. есть ли вообще хоть какой то смысл
пока не очень видно )

Denis
17.03.2017
18:33:23
Они несложно пишутся для любого последовательного контейнера

Сергей
17.03.2017
18:33:55

Denis
17.03.2017
18:34:34
А чем он невалидный?

Gregory
17.03.2017
18:34:50
тем что "такие" итераторы не инвалидируются

Google

Сергей
17.03.2017
18:34:55
лично я за range_v3 подобную обработку данных, где data переносится с помощью move-ctors между копиями контейнеров в pipe подобном виде, трансформируясь по пути
Ребят, есть хороший способ для просмотра автоматически выведенных ссылок? Ну там посмотреть, rvalue или lvalue ссылка, с каким квалификатором она пришла и т.п. в тяжёлом шаблонном коде? Типа static_assert, но чтобы не останавливал компиляцию, а выводил какой нибудь warning вместе с нужной информацией... И вообще, как кто отлаживает шаблонный код?

Denis
17.03.2017
18:53:02
Можно сделать темплейт с приватным конструктором, передсть в него эту ссылку и вызвать конструктор
Он выведет полный тип

Сергей
17.03.2017
18:54:27

Denis
17.03.2017
18:55:56
Ну да
Я не знаб других способов

Сергей
17.03.2017
18:57:02
Ну да
хотелось бы не останавливать компиляцию, нужная специализация класса/функции может идти не первой..

Alexander
17.03.2017
19:01:22
отлаживать шаблонный код - это целое искусство :) тут нужно кастовать разработчиков всяких Boost.MPL
я в ключевых точках делаю static_assert, но это уже отписали выше

Alex Фэils?︙
17.03.2017
19:03:22
еее отладка шаблонов. енабля_иф в помощь и статик_ассерт

Сергей
17.03.2017
19:03:52

Alexander
17.03.2017
19:04:19

Daniil
17.03.2017
19:04:22
знаю я любителя шаблонов @ZaiZuPro

Сергей
17.03.2017
19:05:00
вроде на какой то конфе был доклад про отладку шаблонов, может кто знает?

Alex Фэils?︙
17.03.2017
19:07:03

Gregory
17.03.2017
19:15:08
случаем не что то связанное с clang AST ? )

Alexander
17.03.2017
19:29:25

Сергей
17.03.2017
19:33:02
вот так не получилось(( http://pastebin.com/KiYSkbSB