Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > Re: Fastest way...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 5 of 9 Topic 9561 of 9807
Post > Topic >>

Re: Fastest way to clone a hash_map

by Tony Delroy <tony_in_da_uk@[EMAIL PROTECTED] > Apr 30, 2008 at 03:52 AM

On Apr 30, 3:09 am, devdude <rottygu...@[EMAIL PROTECTED]
> wrote:
> I have the need to take a snapshot of a hash_map during execution
> (actually transform it to a vector).  This map is a shared resource
> and therefore must be locked prior to any read/write operations thus I
> need to minimize the amount of time the map resource is locked.
>
> The map is defined as type <string, boost::shared_ptr<myobject>>.  My
> algorithm is as such:
>
> void SnapShotToVector( vector< pair< string,
> boost::shared_ptr<myobject> >& vec )
> {
>
>     lockResource(this->map);
>     vec.resize( map.size() );
>     copy(this->map.begin(), this->map.end(),list.begin());
>     unlockResource(this->map);
>
> }
>
> For about 3M elements w/in the map, I'm noticing that the resize op
> takes about 150ms and the copy takes ~850ms.  Is there any way to do
> better? I suppose the total time doesn' t matter as it's the time the
> resource is actually locked is the primary concern.

One slightly bizarre suggestion: if you don't literally need a
snapshot you may be able to break the copying into a set of:

   1. lock
   2. copy up to N elements
   3. unlock
   4. if you've copied everything, throw a party and forget about 5&6
   5. lock
   6. search for the last key copied
      if you find it, from that starting position, go to 2
      else delete the key from your copy, go to 6
      (if you exhaust the copied keys, go to 2)

This relies on the observation that it's quick to get an iterator back
in to a known element.

Of course, there are many good reasons for wanting a fair-dinkum
snapshot, so apologies if this is applicable to your situation.

Cheers,
Tony

-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]
 




 9 Posts in Topic:
Fastest way to clone a hash_map
devdude <rottyguy70@[E  2008-04-29 12:09:16 
Re: Fastest way to clone a hash_map
=?ISO-8859-1?Q?Daniel_Kr=  2008-04-29 17:42:35 
Re: Fastest way to clone a hash_map
"Stephen Howe"   2008-04-29 17:43:43 
Re: Fastest way to clone a hash_map
bachlipp@[EMAIL PROTECTED  2008-04-29 17:42:01 
Re: Fastest way to clone a hash_map
Tony Delroy <tony_in_d  2008-04-30 03:52:18 
Re: Fastest way to clone a hash_map
devdude <rottyguy70@[E  2008-04-30 04:13:33 
Re: Fastest way to clone a hash_map
Carl Barron <cbarron41  2008-04-30 04:13:32 
Re: Fastest way to clone a hash_map
Mathias Gaunard <loufo  2008-04-30 04:13:32 
Re: Fastest way to clone a hash_map
"Roman.Perepelitsa@[  2008-04-30 10:27:21 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Jul 19 20:07:11 CDT 2008.