
Dumitru
13.10.2016
15:40:29
http://pastebin.com/6hqjvAVQ
http://pastebin.com/cksLiP0r
gcc, C++14

Google

Stanislav
13.10.2016
15:46:46
давай на ideone.com компилируемый вариант

Kirill
13.10.2016
15:51:47
Господа, у меня при чтении строк из файла размером 1,2 ГБ в unordered_set выжирается 3 ГБ ОЗУ, хотя из файла на самом деле берется только половина информации, т.е. 600 МБ. Есть идеи? http://pastebin.com/CCv8GR98

Stanislav
13.10.2016
15:54:55

Kirill
13.10.2016
15:55:11
В htop смотрел

Stanislav
13.10.2016
15:55:54
и на какую колонку ориентировался? )

Kirill
13.10.2016
15:56:08
RES

Alex Фэils?︙
13.10.2016
15:58:39

Kirill
13.10.2016
15:59:25
Нет, заранее неизвестно количество строк.

Stanislav
13.10.2016
15:59:55
делай после чтения строки shrink_to_fit
по умолчанию капасити в 2 раза больше реальной длины

Dumitru
13.10.2016
16:00:17

Kirill
13.10.2016
16:03:09

Kirill
13.10.2016
16:04:29
нет конечно

Google

Kirill
13.10.2016
16:05:41
size это сколько у тебя конкретно в строке, capacity это сколько у тебя в куче места до ближайшего обьекта
и при конструкторе копирования выделяется аллокатор
*вызывается
иногда до ближайшего align
это к тому что если в куче следом что то стоит, у тебя выравнивание стоит 4 байта, а длина строки 9, то капасити будет 12

Kirill
13.10.2016
16:09:54
А если есть строка, у которой capacity()==size() (после shrink_to_fit()), и она вставляется в unordered_set через перемещение, равенство в контейнере сохранится?

Dumitru
13.10.2016
16:10:13
Все, я понял!
Ппц глупая ошибка(

Kirill
13.10.2016
16:28:42

Square
13.10.2016
16:29:48
Я конечно виндоус макака и там есть целая куча показателей
И ориентироваться можно далеко не на все

Kirill
13.10.2016
16:31:02
Я запустил программу, и в определенный момент она уже лезет в подкачку.

Square
13.10.2016
16:31:08
Это может быть private set, requested и прочее

Kirill
13.10.2016
16:31:19
При том, что свободно точно больше гигабайта ОЗУ

Square
13.10.2016
16:31:29
И какой размер строки?

Kirill
13.10.2016
16:32:13
30 млн строк, каждая по 17*2+1, но в таблицу я заношу только 17.

Square
13.10.2016
16:32:22
Флаги какие? Дебаг/релиз там?

Kirill
13.10.2016
16:32:43
О, об этом я не подумал

Google

Square
13.10.2016
16:33:29
Хэшкарта - размер ключа ещё
Это
Хэшкарта еба
Обычный мап
Возьми
Хэш он же бакетами выделяет память
Ты хоть ушринкайся

Kirill
13.10.2016
16:34:55
Обычный set увеличит сложность

Square
13.10.2016
16:35:48
Ну зато места меньше
А зачем сет?

Kirill
13.10.2016
16:36:30
Нужен быстрый поиск строки

Square
13.10.2016
16:36:56
Короче я сказал своё мнение :)

Square
13.10.2016
16:37:33
Я считаю что в релизе и обычный сет будет занимать столько, сколько ты ожидаешь
Попробовать то никто не мешает

IT_Enot
13.10.2016
16:40:39
короче ребят такая тема
У нас ебнутая шарага
И сайты есть белого списка
И хренолиард в черном списке
Нужно написать мессенджер чтобы работал по локалк
Но тема такая что компы не имеют доступ друг к другу по локалке
А все идет через центральный(учительский)комп
Тот в свою очередь имеет доступ к сети только через сервер в главном корпусе шараги
Нужно сделать мессенджер, ибо скучно)

Alex Фэils?︙
13.10.2016
16:44:44
Upnp

Stuw (Андрей)
13.10.2016
16:46:02
А какие порты и протоколы разрешены?

IT_Enot
13.10.2016
16:46:31
а вот я и хз
В брандмауре же можно настроить любой порт?

Kirill
13.10.2016
16:46:47

IT_Enot
13.10.2016
16:47:00
но не факт потому что чтобы даже включить там сетевое обнаружение других компов нужно было вводить админ логин и пароль

Google

IT_Enot
13.10.2016
16:47:04
которых не знаю

Kirill
13.10.2016
16:47:06
Сдается мне, дело не в контейнере.

Square
13.10.2016
16:48:38
А строки как в контейнер суёшь?

Kirill
13.10.2016
16:49:59

IT_Enot
13.10.2016
16:52:38

Stuw (Андрей)
13.10.2016
16:54:22
Ну и неплохо понять, как все-таки через учительский комп все в сеть ходят. Сомневаюсь, что стоит дцать сетевух

Square
13.10.2016
16:56:40

Kirill
13.10.2016
16:57:09

Square
13.10.2016
16:57:19
Я привык к qt - там все copy on write

Admin
ERROR: S client not available

Square
13.10.2016
16:57:48
Под красноглазые ОСи есть вроде

Stanislav
13.10.2016
16:58:10
поидее в гцц шной реализации строк cow

Square
13.10.2016
16:58:39
Хз, стл вообще давно не юзал

Kirill
13.10.2016
16:59:03

Square
13.10.2016
16:59:12
У меня уже профдеформация

Stanislav
13.10.2016
16:59:58
because libstdc++'s string is Copy-On-Write in GCC 3.
из доков

Google

Kirill
13.10.2016
17:01:55
Valgrind же нужно запускать с отладочной версией?

Square
13.10.2016
17:03:40

Stanislav
13.10.2016
17:03:51
я вчера ж кстати кидал ссылку на видос про стринги от фейсбука на cppcon 2016

Square
13.10.2016
17:04:00
Большими блоками?

Stanislav
13.10.2016
17:04:29
https://www.youtube.com/watch?v=kPR8h4-qZdk

Square
13.10.2016
17:04:33
Хотя если б была фрагментация то картина не такой была бы

Stanislav
13.10.2016
17:04:49
там как раз расскаюзывают как до 5 версии строки работали

Kirill
13.10.2016
17:05:29

Stanislav
13.10.2016
17:09:57
The Qt 5.6.2 patch release continues the quality and maturity focus of Qt 5.6, bringing close to 900 improvements on top of the already solid Qt 5.6.1 release.

IT_Enot
13.10.2016
17:18:15
а система там именно такая как я описал
дерево такое

Kirill
13.10.2016
17:22:20
Вообще весело. ? Я уменьшил размер файла в три раза, а программа все равно выжрала 3 ГБ ОЗУ.

Stanislav
13.10.2016
17:22:32

Andre
13.10.2016
17:22:43

Stanislav
13.10.2016
17:22:44
где ты в while аппендишь line

Stuw (Андрей)
13.10.2016
17:22:48

Stanislav
13.10.2016
17:22:55
в лайн точно только строка онда попадает?
а не все содержимое файла?

IT_Enot
13.10.2016
17:23:35

Kirill
13.10.2016
17:23:36
Да, ибо иначе алгоритм работал бы неверно.