A lot has been done on Gnome Zeitgeist lately. To sum up Zeitgeist now uses a sqlite database to store: Name, URI, Type, Timestamp, Count, Last usage.
This means all provides write their data into a datasink which forwards them to a DB. When an amount of items are asked for the datasink collects them from the database and casts them according to type and forwards them to the UI.
The speed is ok but has to be better! Natan Yellin is working on the cleaning up the gui code part while i am looking at the engine! I would really like having Alex Gravely looking at the code with us since alot of the code originates from him!
As usual you can find the code in launchpad