Я разработал простой Менеджер хранилища фиксированных блоков (SM) и Диспетчер памяти общего назначения в прошлом.В обоих случаях я выделяю большой кусок памяти кучи при запуске и снова и снова использую освобожденную память, предотвращая частые вызовы на дорогие вызовы malloc / new .
Если я говорю о Фиксированный блок SM ( Github link) , то я практически видел выигрыш в производительности, который он приносит.В моем случае это было примерно на 40% улучшение при распределении случайных размеров.
Но в случае универсального менеджера памяти ( Github link ) (без пулов памяти) я не видел видимого прироста производительности.Единственный выигрыш, который я увидел, - это доступ к статистике использования памяти.С точки зрения производительности она снижается из-за накладных расходов, связанных с определением свободных блоков (во время выделения) и расположения памяти на карте (во время освобождения).
Поэтому мой вопрос заключается в том, в каком сценарии был бы пользовательский распределитель памяти общего назначения.полезно?Стоит ли усилий?