performance issues with large numbers of folders



Hi,

I’m a mutt user, but I want to use balsa, because a terminal
program can’t support the type of i18n that gtk+ programs
can. But so far, I’ve run into performance problems that
prevent me from switching.

I have about 4000 folders under ~/mail. There are a number
spots where balsa hangs because of this. Here are a couple I
have noticed (hopefully the only ones):

  • config_views_load, config_views_save: It appears that
    there is at least one configuration key for every
    folder, and these functions iterate over each of them.
    
    config_views_load runs at startup before the gui pops
    up.

    config_views_save runs when you close the app, before
    the gui disappears.

  • scan_mailboxes_idle_cb: Traverses the entire tree of
    mailboxes.

    scan_mailboxes_idle_cb runs at startup after the gui
    pops up, but the whole gui waits on it and appears
    frozen (it doesn’t make the little progress bar go).

Each of these takes over 15 seconds on my machine, perhaps
up to a minute.

I can see at least four possible solutions to the problem:

  • change balsa so that these things aren’t needed or work
    differently somehow
  • run these in threads and let the rest of the program get
    on about its business
  • run them in the main loop, use g_timeout_add or another
    of those to have the functions called repeatedly; they
    should clock themselves to make sure they never run
    longer than 100ms at once
  • decide that the many-mailboxes case is rare and that you
    won’t cater to it (but these performance issues probably
    affect normal users to a lesser extent, too)

All of these options except the 4th look like they’ll
require non-trivial changes to the code. Let’s discuss and
decide on a course of action. :-)

Noah

P.S. This is basically http://bugzilla.gnome.org/show_bug.cgi?id=117223 
fleshed out a bit. 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]