$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andy (atompkins_at_[hidden])
Date: 2007-05-09 16:44:08
"Dave Jenkins" <david_at_[hidden]> wrote in
news:f1t1qp$ra8$1_at_[hidden]: 
< snip >
> - 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? 
First we aren't comparing the same thing.  System::Guid::NewGuid creates
a time-based guid and my library creates either a name-based or a
random-number-based guid.  But regardless, my library should be faster. 
I am sad that it is 2-3 times slower.  It does not seem to be the thread
lock.  Running your test with BOOST_DISABLE_THREADS shows little
improvement.  I have not profiled my code yet.  I assume that the random
number generator is slower than I would like, but I believe that I may
be using it inefficiently.  I will do my best to improve the speed. 
> 
> - 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.
Agreed.
< snip >
> Regards,
> Dave Jenkins 
> 
> Attachment decoded: untitled-2.txt
> ------=_NextPart_000_003D_01C79241.6DA221A0
> #include <boost/guid.hpp>
> #include <boost/progress.hpp>
> #include <string>
> #include <vector>
> 
> int main(int, char*[])
> {
>     using namespace boost;
> 
>     int const N = 10000000;
>     std::vector<guid> g;
>     g.reserve(N);
>     guid dns_namespace_guid("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
>     timer t1;
>     for (int i=0; i<N; i++)
>         g.push_back(guid::create());
>         //g.push_back(guid::create(dns_namespace_guid,
>         "www.widgets.com", 15)); 
> 
>     std::cout << "elapsed time: " << t1.elapsed() << '\n';
>     std::cout << "count: " << N << '\n';
>     return 0;
> }
> 
> Attachment decoded: Test1.cpp
> ------=_NextPart_000_003D_01C79241.6DA221A0
> // TestCLR.cpp : main project file.
> using namespace System;
> using namespace System::Collections::Generic;
> 
> int main(array<System::String ^> ^args)
> {
>     const int N = 10000000;
>     List<Guid> ^g = gcnew List<Guid>();
>     g->Capacity = N;
>     DateTime t0 = DateTime::Now;
>     for (int i = 0; i < N; i++)
>         g->Add(Guid::NewGuid());
>     TimeSpan ts = DateTime::Now - t0;
>     Console::WriteLine("elapsed time=" + ts.ToString() +
>         " Count="+g->Count.ToString());
>     return 0;
> }
> 
> Attachment decoded: TestCLR.cpp
> ------=_NextPart_000_003D_01C79241.6DA221A0
> _______________________________________________
> Unsubscribe & other changes:
> http://listarchives.boost.org/mailman/listinfo.cgi/boost Attachment decoded:
> untitled-5.txt ------=_NextPart_000_003D_01C79241.6DA221A0--
Andy.