Сколько стоит копировать карту? - PullRequest
6 голосов
/ 13 июня 2011

У меня map<EntityState, boost::weak_ptr<Animation>> в моем классе EntityRepresentation. Я бы хотел создать класс Builder для представления, но я должен учитывать стоимость копирования карты.

EntityState дешево копировать, поскольку это просто набор статических функций; boost::weak_ptr также дешево копировать. Как насчет карты в целом?

Ответы [ 4 ]

4 голосов
/ 13 июня 2011

Не оптимизируйте преждевременно. Во многих сценариях производительность во время выполнения класса компоновщика не будет узким местом.

Как правило, сложность копирования карты составляет O(n). Из комментариев похоже, что n мало. Если вы определили, что вам действительно необходимо оптимизировать, то в таком случае использование двух векторов будет дешевле как при доступе к элементам, так и при копировании.

2 голосов
/ 13 июня 2011

Зависит от количества предметов, которые у него есть.Я не думаю, что его собственные члены вызовут много проблем.

1 голос
/ 13 июня 2011

Я удивлен, что никто больше не упомянул Copy Elision.

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

0 голосов
/ 13 июня 2011

Я бы не волновался об этом, пока профилировщик не скажет, что вам нужно, но, вообще говоря, будет одно выделение на элемент на карте, что может оказать значительное влияние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...