170 похожих чатов

А можно немного конкретики по такому вопросу, чтобы разрушить все

мифы, засевшие в голове про кучу:
1) Выделить nRows блоков размером nCols * sizeof(T) при помощи std::malloc
2) Выделить один блок размером nRows * nCols * sizeof(T)
Что быстрее и как понять? Я тут читаю про менеджеры кучи и понимаю что они выделяют по 4 МБ а затем просто мелкие объекты в этих 4 МБ выделяют.

3 ответов

8 просмотров

Аллокаторы и хипы по разному могут работать. Как -- не определено.

Короче Всё зависит от аллокатора На примере jemalloc'a у него есть подсистема малых и больших аллокаций Малые аллокации - до нескольких мегабайта (вроде как) и имеют определённые кратности Когда ты делаешь запрос блока данных, если он входит в систему маленьких аллокаций, аллокатор пытается тебе вернуть уже ранее заалоцированный объект, причём его размер будет равен ближайшему размеру блока. Если у малой подсистемы нет свободных блоков - она запрашивает большой кусок у подсистемы больших аалокаций, который в случае пустой арены лезет в mmap за куском памяти, возвращает в малую подсистему, где он уже пилится на части

В общем, чем меньше аллокаций и чем более крупные, тем быстрее, но тут только за счёт того (хотя бы) что ты вместо 100 (скажем ) вызовов делаешь 1. Ну и да, аллокация дорогая достаточно. (но не так чтобы совсем уже упарываться по её опримизации)

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
какие клиентские датасеты в лазаре умеют объединяться в master-detail? нужно забрать на клиент запись из одной таблицы и выборку из другой связанной один-ко-многим, отредактир...
Igor
19
Подскажите, сейчас что то есть (JS модуль какой-нибудь), что можно использовать для: 1) переваривания javascript codа из html fileа, т.е. разбивки, на переменные, команды, бло...
Iar De
32
Мне интересно, скорее людей здесь используют D, Rust, C/C++ для решения реальных прикладных задач за деньги?)
Evil Satanson
43
кто поможет крякнуть чит? (реверс инжиринг) чтобы разблокировать премиум версию
Mёdkinson Medvezhkin
40
Подскажите, пожалуйста, как отключить очень сильно доставшие меня подсказки в QT Creator? Они просто мешают видеть то, что я пишу, как гирлянда е.... Просто пишешь одну букву...
Mitchel R
3
/////////////////////////////////////// TChart / TLineSeries - сохранение данных (текстовый файл) /////////////////////////////////////// добрый день / работа с графиком: 1....
livontiy
14
Hello I was able to secure a job interview and I need to attend it in 7 hours. I'm so stressed right now, and I also have trust issues so I have this feeling that they may try...
Senator
7
$var = unpack "N"; inet_ntoa($var); Bad arg length for Socket::inet_ntoa, length is 8, should be 4 at а как же тогда надо?
Vyacheslav Olkhovchenkov
6
Делал сайт заказчику в 2018г. Прилетела претензия на фотку в примерах работ от copydefend (ооо "фортуна технолоджис") на 36к рублей 🙈 Конторка эта образовалась в 2023 г, и 13...
Alexander Andreev
10
Карта сайта