|
Boost Users : |
From: Manuel Jung (gzahl_at_[hidden])
Date: 2007-04-30 13:47:45
Hi,
I have to count a lot of words. Up to now i did it with MySQL, because it
was easy. The result is safed there anyway. Now i thought i could speed up
this a little if i would use internally a Multi_index list to store the
words, so i have only to insert all different words. The words are stored
in a UnicodeString from the ICU library.
My code is really near to the one from the example "sequenced.cpp".
Im using the following definition:
typedef multi_index_container<
UnicodeString,
indexed_by<
sequenced<>,
ordered_non_unique<identity<UnicodeString> >
>
> text_container;
typedef nth_index<text_container,1>::type ordered_text;
text_container tc;
Im inserting new words with "tc.push_back(UnicodeString(NewWord));"
And count them exactly like in the example. I thought this should be fast,
but it isnt. It eats up all my CPU, but isnt fast. It is a lot slower than
my old solution.
I have still hope i could speed this up, before i have to switch back MySQL.
The profile of a run says
that "boost::multi_index::safe_mode::check_same_owner<..." eats most CPU
time.
Some suggesting how to speed it up with Multi_index? Or some ideas which
other way would be faster than MySQL inserts?
Thanks
Manu
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net