@ProCxx

Страница 613 из 2477
Nikolai
26.02.2017
18:16:47
— Could NOT find INOTIFY (missing: INOTIFY_INCLUDE_DIR INOTIFY_LIBRARY_DIR) — Could NOT find Sphinx (missing: SPHINX_EXECUTABLE) — Could NOT find PdfLatex (missing: PDFLATEX_EXECUTABLE) как исправить?
оно же тебе черным по белому написал - нет исполняемых файлов. Смотри пути к bin папке либ


26.02.2017
18:17:43
да понял, ненашел таких файлов

он ищеть inotify.h

Andrey
26.02.2017
18:25:54
есть команда locate inotify.h

Google
Andrey
26.02.2017
18:26:10
вот она покажет каких путей у тебя не хватает. Если такой файл вообще есть в системе


26.02.2017
18:27:25
на windowsе ?

или

?

Andrey
26.02.2017
18:29:07
нет, это для линукса


26.02.2017
18:29:32
у меня win

Alex Фэils?︙
26.02.2017
18:31:27
В смаке, как я думаю

Dmitriy
26.02.2017
23:33:43
/stat@combot

Combot
26.02.2017
23:33:44
combot.org/chat/-1001031904034

Monday Begins on Saturday
27.02.2017
08:30:53
Объясните мне кто-нибудь почему у меня есть vector<int> и list<int> и если я вычисляю сумму всех элементов, то операция на list'е оказывается быстрее. Почему так? Я всегда думал что вектор будет быстрее из-за того что там всё в одном блоке памяти лежит

Monday Begins on Saturday
27.02.2017
08:33:06
Я на 10 000 000 создавал, ща код примера выложу где-нибудь

Так. Интересно. С -O3 другие результаты

Google
Stanislav
27.02.2017
08:44:17
о, сегодня ж очередная встреча коммитета

Alex Фэils?︙
27.02.2017
08:45:33
о, сегодня ж очередная встреча коммитета
Да. на нее уже вылетели прям с конфы тогда

Sergey
27.02.2017
08:46:18
Monday Begins on Saturday
27.02.2017
08:46:18
Да я уже разобрался. С флагами оптимизаций сложения вектора быстрее. Причём через std::accumulate быстрее чем через просто цикл

Код-то будет? :)
Хорошо, ща выложу )

Код-то будет? :)
https://gist.github.com/shelomentsevd/9b5764bacd2698056097d7c683dbf2c0

Mikhail
27.02.2017
08:48:26
не может он быстрее или у тебя for криво написан

кароче, нужен код :)

И в дебаге лист все равно медленне должен быть

Stanislav
27.02.2017
08:49:39
http://melpon.org/wandbox/permlink/I8MYeXPdo8tLvPAb

Taras
27.02.2017
08:49:47
мне кажется это зависит от того как ты достаёш элементы из коллекций.
Скорость доступа в листе - динамическая, больше список - дольше доступ. В векторе - статическая

Stanislav
27.02.2017
08:49:55
без всяких оптимизаций видно что лист все равно медленнее

Taras
27.02.2017
08:50:01
Попробуй свой контейнер написать

Дед Пегас
27.02.2017
08:51:39
Ну вектор быстрей по доступу, это логиншно жеж.

Monday Begins on Saturday
27.02.2017
08:52:52
Первый без -O3 второй с O3





Google
Vladislav
27.02.2017
08:53:45
wat
А, произвольный доступ - конечно.

Monday Begins on Saturday
27.02.2017
08:53:49
В первом случае list быстрее. Чудеса

Sergey
27.02.2017
08:53:51


Taras
27.02.2017
08:54:36
https://gist.github.com/shelomentsevd/9b5764bacd2698056097d7c683dbf2c0
Ты с вектором юзаешь хуевый способ нахождения суммы элементов

Taras
27.02.2017
08:54:51
Он сам по себе медленный

Дед Пегас
27.02.2017
08:55:07
Юзай деку вместо листа)

Taras
27.02.2017
08:55:27
Monday Begins on Saturday
27.02.2017
08:55:44
accumulate?
А без accumulate?

Taras
27.02.2017
08:56:31
А без accumulate?
Поищи, их много

Дед Пегас
27.02.2017
08:56:32
http://melpon.org/wandbox/permlink/I8MYeXPdo8tLvPAb

242445 у deque и 696983 у list

Monday Begins on Saturday
27.02.2017
08:57:26
Юзай деку вместо листа)
Надо попробовать. Вообще мне просто на собеседовании спросили что быстрее и почему, а я как-то не смог ответить, теперь вот пытаюсь узнать из-за чего сложение по вектору быстрее

Дед Пегас
27.02.2017
08:58:22
Вектор быстрей при доступе при последовательном доступе потому, что элементы последовательно в памяти расположены...

Но тут ваще непростой вопрос.)

Sergey
27.02.2017
08:58:50
Надо попробовать. Вообще мне просто на собеседовании спросили что быстрее и почему, а я как-то не смог ответить, теперь вот пытаюсь узнать из-за чего сложение по вектору быстрее
Ну, твое изначальное предположение более-менее верное, в векторе элементы лежат последовательно, хорошо ложатся в кешлайн и быстро считаются

Дед Пегас
27.02.2017
08:59:02
Вот такой ответ почему-то не прокатил
Патамущ там не так просто.

Думаю, они хотели узнать, а почему последовательное расположение в памяти быстрей, чем рандомно...

Stanislav
27.02.2017
08:59:40
Sum is: 25000426 List: 222145 microseconds. Sum is: 25000426 Vector: 39549 microseconds. Sum is: 25000426 List cycle: 205900 microseconds. Sum is: 25000426 Vector cycle: 171095 microseconds. если ком уто интересно vs2015

Google
Stanislav
27.02.2017
09:00:01
без всяких флагов оптимизаций

Дед Пегас
27.02.2017
09:00:54
Думаю, они хотели узнать, а почему последовательное расположение в памяти быстрей, чем рандомно...
Вот это, думаю, немного просветит ситуацию https://courses.engr.illinois.edu/ece390/books/artofasm/CH03/CH03-2.html

Admin
ERROR: S client not available

Sergey
27.02.2017
09:01:00
Вот такой ответ почему-то не прокатил
Возможно, интервьюер ожидал услышать, что при работе с листом за каждым элементом приходится отдельно ходить (скорее всего) в память

Дед Пегас
27.02.2017
09:01:55
Вот что я забыл, это по скорости изменения коллекции (добавление/удаление) быстрей...

Vladislav
27.02.2017
09:02:40
list, заполненный в цикле добавлением в конец, тоже будет расположен в памяти относительно последовательно

Sergey
27.02.2017
09:03:07
Вот это, думаю, немного просветит ситуацию https://courses.engr.illinois.edu/ece390/books/artofasm/CH03/CH03-2.html
До кучи ещё вот Дреппера могу предложить почитать, но это если тема реально интересует https://www.akkadia.org/drepper/cpumemory.pdf

Monday Begins on Saturday
27.02.2017
09:03:58
В общем надо про память читать. Я правильно понял?

Дед Пегас
27.02.2017
09:04:04
И про проц)

Воще, кэш же!

Monday Begins on Saturday
27.02.2017
09:05:20
Я это себе туго представляю, но получается что вектор какую-то свою часть хранит прямо в кэше, а список всё хранит в памяти?

Дед Пегас
27.02.2017
09:05:38
Туда ж целыми кусочками копируются данные из памяти)

Sasha
27.02.2017
09:08:11
В кэше никто ничего не хранит кроме процессора
Но процессор не знает, что у него есть кэш(минутка ЭВМ)

Sergey
27.02.2017
09:08:53
Но процессор не знает, что у него есть кэш(минутка ЭВМ)
Ну для того чтобы объяснить почему вектор быстрее этой абстракции вполне достаточно

Monday Begins on Saturday
27.02.2017
09:12:43
Кэш это тоже по сути память же? Может ли быть такое, что list случайно весь попадет в кэш и тогда операция по нему будет быстрее?

Michael
27.02.2017
09:15:00
лист очень маловероятно, вектор да

Sergey
27.02.2017
09:15:12
В общем. И вектор, и список лежат в памяти. Вектор — последовательно, а лист — не всегда, у каждой вершинки есть указатель на следующую и он может указывать на другой участок памяти Просто когда процессор хочет посчитать, например, ту же сумму чисел в кеш отправляется целый кешлайн, например, 64 байта. Он берет первую чиселку, кладет в аккумулятор. Идет за второй, а она такая — оп, тоже есть в кешлайне, за ней не надо идти в оперативную память по медленной шине. Таким образом в кешлайне лежит, например, сразу восемь чиселок, которые надо добавить к аккумулятору. Если лист лежит в памяти последовательно, то процесс, по идее, должен быть таким же. А если элементы как-то неоднородно в памяти лежат, за ними приходится ходить в память (опять-таки, шина в оперативную память очень медленная и читать оттуда очень дорого по сравнению с чтением из кэша)

Google
Sergey
27.02.2017
09:16:33
В общем. И вектор, и список лежат в памяти. Вектор — последовательно, а лист — не всегда, у каждой вершинки есть указатель на следующую и он может указывать на другой участок памяти Просто когда процессор хочет посчитать, например, ту же сумму чисел в кеш отправляется целый кешлайн, например, 64 байта. Он берет первую чиселку, кладет в аккумулятор. Идет за второй, а она такая — оп, тоже есть в кешлайне, за ней не надо идти в оперативную память по медленной шине. Таким образом в кешлайне лежит, например, сразу восемь чиселок, которые надо добавить к аккумулятору. Если лист лежит в памяти последовательно, то процесс, по идее, должен быть таким же. А если элементы как-то неоднородно в памяти лежат, за ними приходится ходить в память (опять-таки, шина в оперативную память очень медленная и читать оттуда очень дорого по сравнению с чтением из кэша)
Господи, чем я занимаюсь, лишь бы не работать...

Дед Пегас
27.02.2017
09:17:17
Учишь людей. И это хорошо. Омниссия одобряет!

Aleksei
27.02.2017
09:18:00
В общем. И вектор, и список лежат в памяти. Вектор — последовательно, а лист — не всегда, у каждой вершинки есть указатель на следующую и он может указывать на другой участок памяти Просто когда процессор хочет посчитать, например, ту же сумму чисел в кеш отправляется целый кешлайн, например, 64 байта. Он берет первую чиселку, кладет в аккумулятор. Идет за второй, а она такая — оп, тоже есть в кешлайне, за ней не надо идти в оперативную память по медленной шине. Таким образом в кешлайне лежит, например, сразу восемь чиселок, которые надо добавить к аккумулятору. Если лист лежит в памяти последовательно, то процесс, по идее, должен быть таким же. А если элементы как-то неоднородно в памяти лежат, за ними приходится ходить в память (опять-таки, шина в оперативную память очень медленная и читать оттуда очень дорого по сравнению с чтением из кэша)
в листе еще есть оверхед на адрес следующего элемента

Дед Пегас
27.02.2017
09:18:36
Да, поэтому кол-во чиселок к кэше будет меньше.

Sergey
27.02.2017
09:19:20
А, ну да Тем более, в случае с std::list это doubly linked list, поэтому там два указателя

Monday Begins on Saturday
27.02.2017
09:20:14
В общем. И вектор, и список лежат в памяти. Вектор — последовательно, а лист — не всегда, у каждой вершинки есть указатель на следующую и он может указывать на другой участок памяти Просто когда процессор хочет посчитать, например, ту же сумму чисел в кеш отправляется целый кешлайн, например, 64 байта. Он берет первую чиселку, кладет в аккумулятор. Идет за второй, а она такая — оп, тоже есть в кешлайне, за ней не надо идти в оперативную память по медленной шине. Таким образом в кешлайне лежит, например, сразу восемь чиселок, которые надо добавить к аккумулятору. Если лист лежит в памяти последовательно, то процесс, по идее, должен быть таким же. А если элементы как-то неоднородно в памяти лежат, за ними приходится ходить в память (опять-таки, шина в оперативную память очень медленная и читать оттуда очень дорого по сравнению с чтением из кэша)
? я все понял, спасибо

Alex Фэils?︙
27.02.2017
09:21:13
В общем. И вектор, и список лежат в памяти. Вектор — последовательно, а лист — не всегда, у каждой вершинки есть указатель на следующую и он может указывать на другой участок памяти Просто когда процессор хочет посчитать, например, ту же сумму чисел в кеш отправляется целый кешлайн, например, 64 байта. Он берет первую чиселку, кладет в аккумулятор. Идет за второй, а она такая — оп, тоже есть в кешлайне, за ней не надо идти в оперативную память по медленной шине. Таким образом в кешлайне лежит, например, сразу восемь чиселок, которые надо добавить к аккумулятору. Если лист лежит в памяти последовательно, то процесс, по идее, должен быть таким же. А если элементы как-то неоднородно в памяти лежат, за ними приходится ходить в память (опять-таки, шина в оперативную память очень медленная и читать оттуда очень дорого по сравнению с чтением из кэша)
#fyi #list #vector #memory

Cyber
27.02.2017
09:38:48
Надо попробовать. Вообще мне просто на собеседовании спросили что быстрее и почему, а я как-то не смог ответить, теперь вот пытаюсь узнать из-за чего сложение по вектору быстрее
такие вопросы на собеседованиях часто задают с незнанием обстановки. и на них, часто, невозможно ответить правильно без использования профайлера. как раз из-за кэшей процессора, brunch prediction, и еще кучи разных оптимизаций

Viktor
27.02.2017
10:36:01
Народ, не могли бы вы объяснить, что значит эта запись на Си?



полный контекст



Daniil
27.02.2017
10:37:36
Спасибо за скрины вместо пасты

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