Могу ли я просто использовать фиксированные массивы вместо пулов памяти?

Вместо того, чтобы создавать систему пула памяти, не могу ли я просто выделить огромные массивы для каждого объекта в начале приложения и просто использовать их, и в крайнем случае какой-то объект нуждается в большем количестве экземпляров, чем его массив, массив просто удвоится или увеличился в четыре раза, чтобы он никогда больше не достиг максимального размера. Мне нужна скорость больше, чем память, поэтому я думаю, что это справедливый компромисс?


person user1779802    schedule 26.11.2012    source источник
comment
Чем это отличается от пула памяти?   -  person Pubby    schedule 26.11.2012
comment
Так обычно реализуются пулы памяти.   -  person Nikolai Fetissov    schedule 26.11.2012
comment
Как это будет быстрее? Похоже, это будет медленнее, поскольку вы будете создавать в два раза больше объектов, чем вам нужно, а создание объектов требует времени.   -  person David Schwartz    schedule 26.11.2012
comment
Во-первых, нет, во-вторых, профилируйте самостоятельно, чтобы определить, нужно ли вам это улучшение скорости, в-третьих, рекомендуется принимать ответы на ваши вопросы.   -  person djechlin    schedule 26.11.2012


Ответы (1)


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

Худший случай в распределителе пула — это когда ему не хватает места и ему приходится выделять новый массив. В худшем случае в вашем распределителе он заканчивается, и ему приходится выделять новый массив большего размера и копировать все старые объекты в новый массив. Очевидно, что последнее займет гораздо больше времени.

person Dirk Holsopple    schedule 26.11.2012