Boost logo

Boost :

Subject: Re: [boost] Review Wizard Report for November 2012
From: Ronald Garcia (rxg_at_[hidden])
Date: 2012-11-17 13:06:39


Thank you Francisco. Also, please cc: me directly on it so it doesn't slip past

Best,
Ron

On Nov 17, 2012, at 8:57 AM, Francisco José Tapia wrote:

> Thanks Ron.
>
> I am sorry because I didn't thought about the resume of the project. It's
> too long, it's like a novel !
>
> I will write a short description and I will send you in a few days.
>
> Thanks
>
> Francisco
>
>
> 2012/11/16 Ronald Garcia <rxg_at_[hidden]>
>
>> Thanks Francisco. I have added Countertree to the review schedule.
>>
>> Best,
>> Ron
>>
>> On Nov 15, 2012, at 10:59 PM, Francisco José Tapia wrote:
>>
>>> Hi , Ron
>>>
>>> I send you a copy of the message.
>>>
>>> I supouse I will have time for the two thinks and . I will examine the
>>> projects for review in order to be reviewer of someone
>>>
>>> Thanks
>>>
>>> Francisco
>>>
>>>
>>> Hi all,
>>> I would like to request a formal review of the library “Countertree +
>>> Suballocator” [countertree]
>>>
>>> Project location ( zip file with code and documentation) :
>>> https://dl.dropbox.com/u/8437476/works/countertree_code_doc.zip
>>>
>>> Quick view of documentation with code download :
>>> https://dl.dropbox.com/u/8437476/works/countertree/index.html
>>>
>>> For the people who don't know this project, this is a description :
>>>
>>> *COUNTERTREE*
>>>
>>> This library is an implementation of a binary red-black counter tree.
>> This
>>> tree have an additional counter in each leaf. This permit the access to
>> the
>>> elements by the position, like in a vector. It is a random access
>> container
>>> with random access iterators . Based on this tree we have :
>>>
>>>
>>> - With unordered information we have vectors (countertree::vector_tree)
>>> with identical interface than std::vector. The vector_tree have the
>> same
>>> speed inserting and deleting in any position (all the operations are
>> O(log
>>> N)).It is slower than std:vector inserting and deleting at end, but
>> much
>>> faster for to insert and delete in any other position.
>>> - With ordered information, we have in the countertree namespace the
>>> classes set, multiset, map and multimap, with identical interface than
>> the
>>> STL classes, with the plus of access to the elements by position, like
>> in a
>>> vector. The iterators are random access , and you can subtract two
>>> iterators in a O(log N) time for to know the number of nodes between
>> them
>>> (even with the end( ) and rend( ) iterators)
>>>
>>> *SUBALLOCATOR*
>>>
>>> In the allocation of equal size elements ( as in STL list, set,
>>> multiset,map and multimap), when the number of elements grows, many
>>> allocators begin to have speed problems. For to improve the speed, many
>>> allocators request to the Operating System big chucks of memory ( pool
>>> allocators). 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 is a solution to these problems*, and others memory
>>> problems described in the suballocator page. The suballocator is a layer
>>> between the allocator and the data structures, compatible with any
>>> allocator with the STL definition. The suballocator request memory to the
>>> allocator, and return to it when unused. The suballocator replace to the
>>> allocator in the allocation of equal size elements
>>>
>>> With the suballocator
>>>
>>> a) *We have a very fast allocation* *(around 2 times faster than the
>>> std::allocator of GCC 4.7, CLANG 3.0 and 3 times than Visual Studio 10
>> *See
>>> details in the *Suballocator Benchmark*)*
>>> b) *Return the suballocator return memory to the allocator, this can use
>> in
>>> the allocation of others types of data or for return to the *Operating
>>> System, decreasing the memory used by the program, *( as you can see in
>> the
>>> *Suballocator Benchmark *)*
>>> c) *You can use with any allocator if it is according with the STL
>>> definition*. The suballocator provides speed and memory management to any
>>> allocator.
>>>
>>> d) Even the time of the allocation is a small part of the time spent in
>> the
>>> insertion in a std::set, the suballocator obtain time reductions over
>> over
>>> the 30% respect the std::allocator. The secret is the cache performance
>> due
>>> to the data locality improvement.
>>>
>>> *COUNTERTREE + SUBALLOCATOR*
>>>
>>> The join of the two ideas provide us data structures with a suballocator
>>> built-in. They are, in the namespace countertree, the vector_tree_pool,
>>> set_pool, multiset_pool,map_pool and multimap_pool, with identical
>>> interface than the STL classes but better performance for big number of
>>> elements
>>>
>>> It is fast, useful and easy to understand and use,. They are the like the
>>> STL classes with a few additional functions.
>>>
>>> This library is designed thinking in programmers with a basic knowledge
>> of
>>> C++. As I say in the documentation, if you know the STL classes vector,
>> set
>>> , multiset, map , multimap and allocator, you know more than 95% needed
>> for
>>> to use this library.
>>>
>>> I showed the library to several friends and colleagues, and one of them
>>> said me “If your potential users are not experts, and they need more
>> than 5
>>> minutes to understand what's the goal of the library and what they can do
>>> with it, many of them leave the page.... , and the library”.
>>>
>>> The first page of the documentation explain the library, the reasons and
>>> what can do. And in the next pages show the details and how can do in a a
>>> easy way.
>>>
>>> I had checked this code with GCC 4.7 , CLANG/LLVM 3.0 and Visual C++ 10 (
>>> all with 32 and 64bits.). In code of the project is composed by the code
>> of
>>> the classes, the test programs, the benchmarks programs used and
>> mentioned
>>> in the documentation, and several examples of the code
>>>
>>> I had checked all the requirements for to request the review. But I am
>> not
>>> sure if all is OK. If you miss something or something is wrong , please ,
>>> mail me and I will correct as soon as possible
>>>
>>>
>>> Sincerely yours
>>>
>>> Francisco Tapia
>>>
>>> fjtapia_at_[hidden]
>>>
>>>
>>> 2012/11/16 Ronald Garcia <rxg_at_[hidden]>
>>>
>>>> Hello Francisco,
>>>>
>>>> Thank you for your note. Could you forward me a copy of the October 3
>>>> note, because I do not have a copy.
>>>> Also, I cannot estimate the time when the review will happen. You will
>>>> need to find a review manager first and then schedule the review, so the
>>>> time until the review could vary greatly. Ultimately it is up to you
>>>> whether you would like to continue working or prepare for review now.
>>>>
>>>> Best,
>>>> Ron
>>>>
>>>>
>>>> On Nov 14, 2012, at 3:02 PM, Francisco José Tapia wrote:
>>>>
>>>>> Hi Ronald
>>>>>
>>>>> The 3 of October I sent a message requesting the Formal Review of the
>>>>> library Countertree. I don't know if this is sufficient for to request
>> a
>>>>> Formal Review. If not, please, say me, in order to to do it.
>>>>>
>>>>> That message contains a brief description of the project. The code and
>>>> the
>>>>> documentation are located in my dropbox, because when I had lost the
>>>>> password of the vault. But if it is necessary I will put there.
>>>>>
>>>>> Project location ( zip file with code and documentation) :
>>>>> https://dl.dropbox.com/u/8437476/works/countertree_code_doc.zip
>>>>>
>>>>> Online documentation with code download :
>>>>> https://dl.dropbox.com/u/8437476/works/countertree/index.html
>>>>>
>>>>> I would know if you have any time estimation about the beginning of the
>>>>> review. I ask you because, in the Countertree library the logical
>>>> expansion
>>>>> is the concurrent version. This is important because many libraries
>> like
>>>>> the Threading Building Blocks have concurrent data structures, but
>> don't
>>>>> have concurrent data structures based on trees ( set, multiset, map and
>>>>> multimap), due to the difficulty of to distribute the elements stored
>>>>> between an arbitrary number of threads. With the countertree is easy
>>>>> because you can use like a vector.
>>>>>
>>>>> Depending of the time estimation, if close, I will do more quietly and
>> I
>>>>> can be a reviewer of some library, if not I will tray to finish the
>>>>> concurrent part for the review.
>>>>>
>>>>> Regards
>>>>>
>>>>> Francisco Tapia
>>>>>
>>>>>
>>>>> 2012/11/12 Ronald Garcia <rxg_at_[hidden]>
>>>>>
>>>>>> Thank you for catching that Chris.
>>>>>>
>>>>>> Best,
>>>>>> Ron
>>>>>>
>>>>>> On Nov 11, 2012, at 12:13 PM, Christopher Kormanyos wrote:
>>>>>>
>>>>>>>
>>>>>>> <snip>
>>>>>>>
>>>>>>>> The following libraries have been accepted to Boost, but have not
>> yet
>>>>>>>
>>>>>>>> been submitted to SVN:
>>>>>>>
>>>>>>> <snip>
>>>>>>>
>>>>>>> There's Multiprecision as well, unless I missed it in the list.
>>>>>>>
>>>>>>> Thank you for the excellent update!
>>>>>>>
>>>>>>> Best regards, Chris.
>>>>>>>
>>>>>>> <snip>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Unsubscribe & other changes:
>>>>>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Unsubscribe & other changes:
>>>>>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Unsubscribe & other changes:
>>>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>>>
>>>>
>>>> _______________________________________________
>>>> Unsubscribe & other changes:
>>>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>>>
>>>
>>> _______________________________________________
>>> Unsubscribe & other changes:
>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>
>>
>> _______________________________________________
>> Unsubscribe & other changes:
>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk