Некоторые преимущества управления собственной кучей:
- Возможно, вам удастся оптимизировать работу под свои нужды и повысить производительность.
- Вы можете избежать использования объектов синхронизации, если знаете правила параллелизма.
- Один свободный может освободить весь набор выделений. Например, недолговечный процесс, которому требуется куча небольших выделений, которые освобождаются одновременно, может вырезать их из большего блока, который может быть освобожден одним вызовом позже.
Однако недостатки очень велики. Дополнительная сложность приведет к большему количеству ошибок, более сложному обслуживанию и, возможно, в конечном итоге к более низкой производительности У меня нет абсолютно никаких данных, подтверждающих это, но я подозреваю, что больше домашних систем управления кучей приводят к худшей производительности, чем помогают.
Некоторые преимущества использования системных распределений (например, HeapAlloc):
- Меньше сложности.
- Снижен риск возникновения проблем параллелизма при выделении / освобождении.
- Способность использовать Куча низкой фрагментации . Это уже делает очень хорошую работу в большинстве случаев очень эффективной обработки небольших выделений.