Boost logo

Boost :

Subject: Re: [boost] [Root Pointer] Seeking a Review Manager
From: Edward Diener (eldiener_at_[hidden])
Date: 2016-04-01 19:32:31


On 4/1/2016 1:25 AM, Phil Bouchard wrote:
> Greetings,
>
> - "Root Pointer" is an alternative to the long unsolved problem of
> garbage collectors which lasted for more than 70 years!
>
>
> - Thanks to Paul A. Bristow for his help on the generation of the
> documentation which is now available at the following link:
> http://philippeb8.github.io/root_ptr/

I have no idea from the documentation why I should use root_ptr, what
its purpose is, and when I should use it.

Code examples are not an explanation of a library. I wish I could repeat
that 1 million times without anybody feeling insulted.

Here is the explanation I get of root_pointer from your library:

"Root Pointer is a memory manager on top of reference counting and is
also able to detect outright unreferenced cyclic blocks of memory."

That's it ! Literally !

Honestly, do you really expect anyone to be interested in what you have
done if that is the entire explanation for everything in your library ?

I realize you have a tutorial but what good would that do me if I have
no idea what 'root_pointer', 'make_root', 'node_ptr', and 'make_node'
has to do with anything ? Of course I can ask a ton of questions but why
would I want to do that if your doc doesn't tell me anything.

My suggestion is to write documentation which seeks to explain the why,
what, and when of what you have created.

>
> (I apologize for the misplaced images in the rationale)
>
>
> - The library itself can be found here:
> https://github.com/philippeb8/root_ptr/
>
> All examples and tests compile fine with BJAM with GCC and MSVC.
>
>
> - Also here is a quick overview on the benchmarks:
>
> Single threaded:
> unique_ptr (new): 43.2705
> unique_ptr (make_unique): 42.4111
> shared_ptr (new): 68.9101
> shared_ptr (make_shared): 46.6575
> shared_ptr (allocate_shared_noinit): 31.2334
> root_ptr (new): 30.3701
>
> Multi threaded:
> unique_ptr (new): 42.1397
> unique_ptr (make_unique): 43.4631
> shared_ptr (new): 76.4543
> shared_ptr (make_shared): 76.6611
> shared_ptr (allocate_shared_noinit): 81.9926
> root_ptr (new): 66.3417
>
>
> - An example of its usage can be seen here:
>
> https://github.com/philippeb8/root_ptr/blob/master/example/t100_test1.cpp
>
> We can see in the aforementioned link that outputting part of a complex
> graph, cyclic or not, can be done in the following simple way:
>
> cout << "Mind dump:" << endl;
> cout << * t100 << endl;
>
> cout << "Searching for: \"einstein\"" << endl;
> if (node_ptr<neuron_base> p = t100->search("einstein"))
> cout << p->sort().unique() << endl;
>
> cout << "Searching for: \"graviton\"" << endl;
> if (node_ptr<neuron_base> p = t100->search("graviton"))
> cout << p->sort().unique() << endl;
>
>
>
> Sincerely yours,
> -Phil


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