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