Артур.
Похоже, должен тебя огорчить.
Вся твоя механика бесполезна.
Ибо единственное, что она делает - это избавляет от InitObject() - и все.
В принципе, если включить логику - это и так понятно.
Ибо создание объекта из рантайм класса не может быть намного медленнее, чем просто создание объекта через new.
Ну, посмотри хотя бы реализацию IMPLEMENT_DYNCREATE - это ни что иное, как простой new.
Можно и эксперементально в этом убедиться - просто заремить в нужном месте CCreatedStrategyFromRuntimeClass
// pCont->InitObject(szClassName);
и посмотреть на тайминги.
Короче, все прекрасно, но напрасно.
Ну, впрочем, для разминки, наверное, было неплохо.
P.S.
Кстати, CIStringMap сам управляет размером hash таблицы в обе стороны, и делает это неплохо.
Так что никаких AutoGrowIfNeeded можно не изобретать.