-> New memory allocator for Bmesh
authorGeoffrey Bantle <hairbat@yahoo.com>
Sun, 1 Jun 2008 17:15:03 +0000 (17:15 +0000)
committerGeoffrey Bantle <hairbat@yahoo.com>
Sun, 1 Jun 2008 17:15:03 +0000 (17:15 +0000)
commit07b1608fbe52f729eae39c307060f92948aabf37
tree96dcc1dde0038151362edfa437c843d042653e0d
parent652ee1e31baa52c8e504bfcf3759ea94c7f5ab66
-> New memory allocator for Bmesh

Added a new pooling allocator for Bmesh based upon
the pool allocator availible in the Boost C++ library
as described here:

http://www.boost.org/doc/libs/1_34_0/libs/pool/doc/concepts.html

Each pool allocates elements of a fixed size, so every
element type in a mesh gets its own pool. For instance
verts occupy a different pool than edges. Each pool
is comprised of multiple arrays of a fixed size and allocating
/freeing elements is simple as removing or adding a head
to a linked list. Since the list of free elements is interleaved
throughout the unused space in the arrays, the overhead
for storing the free list is only 1 pointer total per pool.

This makes building/destroying bmesh structures much faster
and saves quite a bit of memory as well.
source/blender/blenkernel/BKE_bmesh.h
source/blender/blenkernel/intern/BME_mesh.c
source/blender/blenkernel/intern/BME_structure.c
source/blender/blenkernel/intern/bmesh_private.h
source/blender/blenkernel/intern/modifier.c
source/blender/src/editmesh_tools.c