de::BitField is heavily used for managing the OpenGL state in de::GLState. However, it was storing the elements metadata separately in each BitField instance even though the metadata is the same for all the BitFields used in GLState, and every time a BitField was copied it was necessary to make a copy for the metadata and destroy the old copy. This produced a measurable overhead when doing lots of GLState::apply() calls.
Now BitField stores the metadata externally and it can be shared efficiently by multiple instances.
Refactor|Optimize|libdeng2|libgui: Enhanced BitField behavior
de::BitField is heavily used for managing the OpenGL state in
de::GLState. However, it was storing the elements metadata separately
in each BitField instance even though the metadata is the same for
all the BitFields used in GLState, and every time a BitField was
copied it was necessary to make a copy for the metadata and destroy
the old copy. This produced a measurable overhead when doing lots
of GLState::apply() calls.
Now BitField stores the metadata externally and it can be shared
efficiently by multiple instances.