> > commit 3a0ec89c06c79db3489f760ab248d0240638732a > Author: Mike Alexander <m...@umich.edu> > Date: Mon Nov 2 21:16:09 2015 -0500 > > Optimize pricedb so it works better with really big price lists. > > Opening my accounts file took over 10 minutes before this change, most of > it spent populating the account balances in account tree, and most of that > spent in g_sort_list. Expanding or collapsing subtrees in the account tree > also took several seconds. This change reduces the use of g_sort_list and > reduces the length of lists sorted when it is used. Opening the file is > now only a few seconds slower than before the PriceDB changes.
Mike, Wow, you must have a really big pricedb or maybe an old Mac. I’d done a first pass on this, replacing the GNCPriceList (with its sorted insert) with a plain GList and sorting at the end. I’ve got about 30K pricedb entries, and I never had the patience to let it finish — the longest I let it go was about 30 minutes. After replacing the GNCPriceList with a plain GList and sorting once at the end it loaded in a few seconds… and that turned into 10 minutes for you. The comment at line 1497 is a bit misleading: It’s not the currency hash table that tells us they’re sorted, it’s that the currency hash table returns a GNCPriceList and we know *that* is sorted. It looks like price_list_scan_any_currency has taken on a lot of the filtering requirements to minimize the returned list size. I think a comment at the top explaining what it does and how it does it would be helpful going forward. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel