Showing posts with label evolution. Show all posts
Showing posts with label evolution. Show all posts

Thursday, 5 April 2007

Evolution address book TODO

Some suggested improvements to the contacts component in Evolution (somewhat ordered by priority):
  • Synchronise with devices and other clients
  • Better looking display panes (integrated search and proper context menus)
  • Better search UI
  • Working LDAP support
  • Working GAL support (and maybe groupwise)
  • Do something about the slow vCard parsing
  • Replace CORBA with DBUS

Monday, 2 April 2007

libebook scalability

Ever had a monster-addressbook in Evolution? During some performance testing of libebook this weekend, I found that it behaves very badly with large addressbooks. A bit of digging revealed the cause - in the way it uses GList. When fetching multiple contacts from the standard file backend, g_list_append is used instead of g_list_prepend, which scales way better. A tiny patch fixes the problem.



The "libdb direct" numbers stem from a routine that bypasses evolution-data-server altogether and connects directly to libdb. Consider that almost the ultimate "time to beat", given the current database format. There is no doubt room for improvement.

All tests are run with a number of equal contacts with only name and email filled in. The database was stored on a tmpfs drive (ramdisk). For those who are interested, to create 1 million contacts take several hours.. I don't think that anyone sane will have tens of thousands of contacts, but for testing purposes, for batch processing and large enterprises, good scalability is a must. The address book has more potential for peformance improvements, but sooner or later the verbose data structure will be the limit.

I'm sure g_list_append is used in a similar way a lot of places around e-d-s and GNOME in general. A quick-win is to replace with g_list_prepend wherever n is large.