Re: [GNC-dev] Performance regression loading account

john <[email protected]>
Newsgroups gmane.comp.gnome.apps.gnucash.devel
Message-ID <[email protected]>

> On Mar 12, 2023, at 1:28 PM, Maarten Bosmans <[email protected]> wrote:
> 
> Hi all,
> 
> When testing the 4.902 flatpak, I noticed that loading an account
> takes several (~4.5) seconds. This account has about 24k transactions
> and loads in less than half a second on the GnuCash 4.8 from my
> distribution. Is this a regression because of a code change, or
> perhaps simply the result of a debug build in the flatpak?
> 
> From the attached flamegraph you can see that a lot of time is spent
> in `g_utf8_collate` for the quickfill insert. That function does not
> appear below `gnc_quickfill_insert` for the 4.8 run. I did a quick
> search in the git history to see that may be some caller was changed
> to the `QUICKFILL_ALPHA` sort method, but could not easily find such a
> thing.
> 
> Another difference with 4.8 is stat `gnc_table_realize_gui` (which
> takes 0.85s) does not appear below
> `gnc_plugin_page_register_create_widget` and that function only takes
> 0.03s in total. This time seems to be spent in Gtk.
> 
> I don't think this is a release blocking bug, but GnuCash feels quite
> sluggish to me, so it would be nice to fix this papercut before 5.0.
> Any pointers on how to proceed?


My first guess is that it's from creating a cache of quickfill entries to populate a drop-down list of possible entries similar to the way the transfer account field has worked for a couple of years.

An obvious optimization is to get a collation key with g_utf8_collate_key for each string and use that for doing the actual sorting/ordered inserting. It's still a char-by-char comparison but it saves having to validate and normalize the strings on every compare.

Regards,
John Ralls
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.