> 
> 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

Reply via email to