Пул памяти в переполнении стека

У меня очень высокопроизводительная библиотека C ++. Я думаю о записи пула памяти, чтобы мне не пришлось использовать глобальный new а также delete, Я немного почитал. Но хотелось бы знать, поможет ли это мне в снижении производительности и утечке памяти.

4

Решение

Если у вас нет особой причины полагать, что ваша библиотека получит выгоду от специального распределителя, есть вероятность, что он, вероятно, мало поможет, если вообще будет.

Похоже, вы пытаетесь выполнить ненаправленную оптимизацию. Не. Сначала используйте профилирование для сбора данных о производительности, затем рассмотрите возможность оптимизации, если это уместно.

2

Другие решения

Распределитель памяти, который точно настроен на точный шаблон распределения памяти вашего приложения, должен превзойти любой общий распределитель — учитывая, что ваши шаблоны распределения отличаются от «универсальных» и являются предсказуемыми. Однако уменьшение или обнаружение утечки памяти — это совершенно другая проблема, и ее следует решить, прежде чем беспокоиться о производительности.

1

Согласно моему опыту, реализация собственного пула памяти не влияет на производительность. Потому что в многопоточной среде вы должны использовать мьютекс для защиты выделения и освобождения памяти в пуле, в то время как мьютекс очень тяжел по сравнению с системой new / delete.

Также это не помогает уменьшить утечку памяти. Чтобы уменьшить утечку памяти, вы должны обязательно освободить всю выделенную память. Это действительно должно быть решено с помощью вашей программы, а не пула.

Единственная выгода может помочь отследить использование памяти независимо от стороннего инструмента.

0
По вопросам рекламы [email protected]