У меня следующая ситуация, и я ожидаю некоторого совета экспертов от SO.
Я пишу приложение, и как часть этого мне нужно предоставить API
для создания, модификациии удаление объекта (ов).Каждый создаваемый объект должен быть уникально идентифицирован (только с положительными идентификаторами)!
Система будет иметь следующее количество объектов в данный день.
- Минимальное -
<50,000 objects
(60%
- 14.4/24 hrs
) - Среднее-
>50,ooo but <65,000 objects
(30%
- 7.2/24 hrs
) - Пик -
>65,000 but <100,000 objects
(10%
- 2.4/24 hrs
)
Теперь вопрос в том, что должнобыть type
идентификатора объекта?Корпус #1
и #2
поместится в пределах unsigned short int
(2 bytes
).Но он не может вместить объекты для случая #3
.Поэтому case #3
требует более широкого типа, например int
(4 bytes
).
Я не хочу использовать int
, когда система находится в случае #1
и случае #2
(90%
времени), потому что, скажем, в настоящее время существует 65k
объектов всистема, и если мы используем int
для хранения идентификатора объекта, то мы будем использовать удвоенный объем памяти по сравнению с использованием unsigned short int
.OTOH, когда система находится в пике (10%
времени), нам определенно нужно int
для хранения идентификатора объекта.
И, может быть, время, когда система колеблется между случаями #2
и #3
в зависимости от потребностей пользователей.
В C
, есть ли способ справиться с этой ситуациейэффективным способом, то есть путем изменения type
идентификатора объекта в зависимости от использования во время выполнения ?!
ПРИМЕЧАНИЕ: когда объекты удаляются, идентификатор удаленного объекта будет использоваться для создания следующего объекта.А обтекание идентификатора объекта будет выполняться только в угловом случае (до тех пор, пока это не будет абсолютно необходимо).