<p style="margin-bottom:0in"> <font face="Cantarell"><font size="2" style="font-size:11pt">I
am a teacher of computing programming in  Madrid (Spain).Reciently I
had presented for to be examined new library in Boost.(
<a href="http://dl.dropbox.com/u/8437476/works/countertree/index.html">http://dl.dropbox.com/u/8437476/works/countertree/index.html</a>
 ). </font></font><span style="font-size:11pt;font-family:Cantarell">I
am writting you because I think a part of this library, the
suballocator, can be useful to you.</span></p>
<p style="margin-bottom:0in"><span style="font-size:11pt;font-family:Cantarell">The
suballocator  works with the allocator for to improve the allocation
speed of fixed size elements, like in the Standard Library list, set,
multiset, map and multimap.</span></p>
<p style="margin-bottom:0in"><span style="font-size:11pt;font-family:Cantarell">In
the benchmark done with CLANG 3.0 ( <a href="http://dl.dropbox.com/u/8437476/works/countertree/suballocator.html#benchmark">http://dl.dropbox.com/u/8437476/works/countertree/suballocator.html#benchmark</a> ),</span><span style="font-family:Cantarell;font-size:15px"> </span><span style="font-family:Cantarell;font-size:15px">the suballocator</span></p>

<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt">a)
Provide </font></font><font face="Cantarell"><font size="2" style="font-size:11pt"><b>fast
allocation</b></font></font><font face="Cantarell"><font size="2" style="font-size:11pt">
</font></font><font color="#0000a0"><font face="Cantarell"><font size="2" style="font-size:11pt"><i>(around
2 times faster than the std::allocator of  CLANG 3.0 )</i></font></font></font></p><p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt">b)
</font></font><font face="Cantarell"><font size="2" style="font-size:11pt"><b>Return
memory to the allocator, for to be used by others types of data</b></font></font><font face="Cantarell"><font size="2" style="font-size:11pt">.
For to improve the speed allocating of the small size elements, many
allocators request to the Operating System big chucks of memory. With
this, the allocator don't need request memory to the operating system
for each allocation. But many allocators don't return well the unused
chucks of memory to the Operating System and the memory used by the
allocator is the maximum used, never decrease . The suballocator have
an agressive policy in order to return the unused memory to the
Operating System and decrease the memory used by the program.  </font></font></p><p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt">This
problem is specially important in two environments : </font></font></p><font face="Cantarell"><ul><li><span style="font-size:11pt">When
        you have a limited resources, as occurs in the mobile phones, pads ,
        tablets...</span></li><li><span style="font-size:11pt">When
        the programs must run continuously in a multitask environment</span></li></ul></font><p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt"><b>c)
        You can use with any allocator if it is according with the STL
        definition</b></font></font><font face="Cantarell"><font size="2" style="font-size:11pt">.
        The suballocator provides speed and memory management to any
        allocator</font></font></p><p style="margin-bottom:0in"><span style="font-family:Cantarell;font-size:11pt">d)
        In the insertion in a std::set,  the allocation time is around 1%.
        The suballocator obtain time reductions over  the 30% respect the
        std::allocator. The secret is the cache  performance due to the data
        locality improvement.</span></p></blockquote>




<ol type="i" start="100">
        
        <p style="margin-bottom:0in"></p>
</ol>
<ol type="i" start="500">
        
        <p style="margin-bottom:0in"></p>
</ol>
<p><font face="Cantarell"><font size="2" style="font-size:11pt"><br></font></font></p><p><font face="Cantarell"><font size="2" style="font-size:11pt">You
can find the documentation and the code here </font></font><span style="font-size:11pt;font-family:Cantarell">(
</span><a href="http://dl.dropbox.com/u/8437476/works/countertree/suballocator.html" style="font-size:11pt;font-family:Cantarell">http://dl.dropbox.com/u/8437476/works/countertree/suballocator.html</a><span style="font-size:11pt;font-family:Cantarell">
 ).</span></p>
<p style="margin-bottom:0in"><span style="font-size:11pt;font-family:Cantarell">If
you want to know something more, have some idea, any comment, or if
you find any error or problem, please mail me (</span><a href="mailto:fjtapia@gmail.com" target="_blank" style="font-size:11pt;font-family:Cantarell">fjtapia@gmail.com</a><span style="font-size:11pt;font-family:Cantarell">)</span></p>

<p style="margin-bottom:0in"><font face="Cantarell"><span style="font-size:15px"><br></span></font></p>
<p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt">Sincerely
yours</font></font></p>
<p style="margin-bottom:0in"><font face="Cantarell"><font size="2" style="font-size:11pt">Francisco
Tapia </font></font>
</p>
<p style="margin-bottom:0in"><a href="mailto:fjtapia@gmail.com" target="_blank"><font face="Cantarell"><font size="2" style="font-size:11pt">fjtapia@gmail.com</font></font></a><font face="Cantarell"><font size="2" style="font-size:11pt"><span lang="en-US">
</span></font></font>
</p>
<p style="margin-bottom:0in"><br>
</p>