Название: Оптимальное хранение члена класса Отправлено: Igors от Июль 22, 2020, 13:33 Добрый день
Есть базовый класс с членом m_polygons Код Сейчас он создается в конструкторе и удаляется в деструкторе (scoped в масть, ну то мелочи). Этот класс наследуется 2 десятками др классов, для каждого порожденного класса член m_polygons создается один и тот же, т.е. вроде бы он должен быть singleton'ом каждого порожденного. Но есть 2 исключения а) CModelPrimitive - для него m_polygons зависит от др члена - строки "name" (имя модели загружаемой с диска) b) CDetailPrimitive - для него m_polygons зависит от др члена - int "details" (уровень деталировки) Для этих порожденных можно сделать статик мапы, для остальных singleton'ы. Но все-таки уж очень много классов менять - нет ли более элегантного решения? Спасибо Название: Re: Оптимальное хранение члена класса Отправлено: qate от Июль 22, 2020, 17:43 Замутить свой "Implicit Sharing" или взять QByteArray ?
Название: Re: Оптимальное хранение члена класса Отправлено: Igors от Июль 23, 2020, 13:40 Замутить свой "Implicit Sharing" или взять QByteArray ? Ну хорошо, пусть m_polygons был бы QByteArray, т.е имплисит шара для него поддерживается. И что с того ?Код Сейчас здесь создаются данные точно такие же как и для предыдущего экземпляра, имплисит шара сама по себе от этого дубляжа не избавляет. Вот если бы мы копировали.. (но об этом речь не идет) Название: Re: Оптимальное хранение члена класса Отправлено: qate от Июль 23, 2020, 19:54 имплисит шара сама по себе от этого дубляжа не избавляет если данные точно такие же, то избавляет Название: Re: Оптимальное хранение члена класса Отправлено: AkonResumed от Октябрь 27, 2020, 21:41 А просто три синглтона без всяких мап, соответственно, для CBasePrimitive, CModelPrimitive, CDetailPrimitive:
Код: Polygons* poligonsInstance() Polygons& poligonsInstance(int details) |