Boost logo

Boost :

From: Dave Jenkins (david_at_[hidden])
Date: 2007-05-09 13:53:31


Overall, I think there is a need for this library and it works as described,
so it should be Accepted. However, I have a serious concern with the
performance when generating large numbers of GUIDs (see below). If not
addressed, this might cause people to choose faster solutions over this
library.

- What is your evaluation of the design?

I think the design is reasonable and complete enough for my use. I agree
with a previous comment that UUID would be a better name for the library.

- What is your evaluation of the implementation?

I am concerned about the performance of this library when generating a large
number of GUIDs. I wrote two small programs to compare performance between
MSVC 8.0 native mode using the Boost.GUID library and C++.CLR using the
Microsoft System.Guid library. The CLR version ran much faster. For ten
million GUIDs, the times were 5 seconds for System.Guid, 16 seconds for
Boost.GUID (random number based) and 12 seconds for Boost.Guid (name-based).
The source code for the programs is attached. I would have expected the
native mode program to run faster or about the same. Is there something
wrong with my code? Could this be caused by the Thread lock? Or maybe the
random number generator takes more time?

- What is your evaluation of the documentation?

At the start of the document, I would prefer a text paragraph or two
describing what a GUID is, what they look like, and what the library does
with them (input/output/create). Also, a description of the name-based and
random-number-based alternatives might help up front. In the Design Notes
section, could you provide a link to a SHA-1 reference like
http://www.itl.nist.gov/fipspubs/fip180-1.htm.

- What is your evaluation of the potential usefulness of the library?

I think this is a useful library for many purposes. With multi-threading
and multi-processor architectures becoming more popular, UUIDs will be used
more frequently.

- Did you try to use the library? With what compiler? Did you have any
problems?

Yes, I tried a minimal example to test the performance using the MSVC 8.0
compiler. See my performance concerns above.

- How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?

Moderate. I read the documentation and skimmed through the source code.

- Are you knowledgeable about the problem domain?

I have used UUIDs in the past and know, in theory, how they are generated.
But I have always used databases, libraries, or utility programs to generate
them.

Regards,
Dave Jenkins





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