Это очень сильно зависит от вашей схемы распределения памяти. Исходя из моего личного опыта, в проекте обычно есть один или два класса, которые требуют особых соображений, когда речь идет об управлении памятью, потому что они часто используются в той части кода, где вы проводите много времени. Также могут существовать классы, которые в определенном контексте требуют особой обработки, но в других контекстах могут использоваться, не беспокоясь об этом.
Я часто заканчиваю тем, что управляю такими объектами в std :: vector или чем-то похожем и явном, а не переопределяю процедуры выделения для класса. Во многих ситуациях куча действительно излишня, и шаблоны распределения настолько предсказуемы, что вам не нужно выделять в куче, а в какой-то гораздо более простой структуре, которая выделяет большие страницы из кучи, что требует меньших затрат на ведение бухгалтерского учета, чем выделение каждого отдельного экземпляра в куча.
Вот некоторые общие вещи для размышления:
Во-первых, небольшие объекты, которые быстро распределяются и уничтожаются, должны быть помещены в стек. Самое быстрое распределение - это те, которые никогда не делаются. Распределение стека также выполняется без какой-либо блокировки глобальной кучи, что хорошо для многопоточного кода. Выделение в куче в c / c ++ может быть относительно дорогим по сравнению с языками GC, такими как java, поэтому старайтесь избегать этого, если вам это не нужно.
Если вы делаете много выделения, вы должны быть осторожны с производительностью потоков. Классическая ловушка - это строковые классы, которые часто выполняют скрытые действия для пользователя. Если вы выполняете много обработки строк в нескольких потоках, они могут столкнуться с мьютексом в кучном коде. Для этого, взяв под контроль управление памятью, можно значительно ускорить процесс. Переключение на другую реализацию кучи, как правило, здесь не является решением, поскольку куча все еще будет глобальной, и ваши потоки будут бороться за это. Я думаю, что Google имеет кучу, которая должна быть быстрее в многопоточных средах, хотя. Сам не пробовал.