[sword-devel] Question for Optimization / speed experts
Joachim Ansorg
sword-devel@crosswire.org
Mon, 6 Jan 2003 14:46:27 +0100
Hi!
Some questiosn for optimizations experts :)
I'm working on a piece of code in BibleTime which gives me headaches.
BibleTime supports displaying different lexicons side by side, it offers only
the keys which are available in all of the chosen lexicons.
The function which creates the list of entries which are available in all
modules is ways too slow and too CPU consuming.
I implemented it the following way:
1. Sort the modules by number of entries (from small to large)
2. Use the modules with the fewest entries and go through all of it's
entries:
3. Is the entry in all other modules? Add the entry to a list of good
entries it it is, otherwise continue with the next entry of the smallest list
and compare it with all other chosen modules.
Assume the user selected BDB together with StrongsHebrew. Each of the modules
has around 10000 entries. So the outer loop would have 10000 iterations, the
inner loop would have another 10000 iterations. So we get
10.000*10.000=100.000.000 = one hunred million iterations. This is ways too
slow and ways too much.
This needs on my 1.2GHz Atlon with 512 MB Ram more then five seconds.
If there are three, four or even five modules side by side we get much more
loops.
Are the other ways to do such a task? Since the entry lists are sorted by the
alaphabet this would be a good point to start. But I don't know how to do it
best.
I'd be really glad for help with this case!
Thank you!
Joachim
--
Joachim Ansorg
www.bibletime.info
www.ansorgs.de