Am Montag, den 04.12.2006, 14:42 -0800 schrieb Robert Burrell Donkin > My local fork has wandered quite a way away from the JAMES base: I gave up > running the test suite on my personal fork quite a while ago. The code wasn't > really intended to be a serious proposal. just what works for me.
So what are the most itching issues you have fixed in your local branch that aren't in trunk? Maybe we can bring them a bit nearer. Apart from that you could check out a second instance of trunk to be uptodate with recent changes. This way you could try out and test your ideas with valid results. > The STATUS issue is so large when using evolution that it renders JAMES IMAP > unusable for anyone other than developers. it basically takes 10 minutes to > open the client even with the relatively small volumes of data I have > currently (probably < 5000 messages). > Any speed up would be great but i fear that something more radical may be > needed. Evolution sends a STATUS every couple of minutes for every visible > mailbox. In fact the current intended audience are only developers because it is experimental. Did you try out the recent changes I made to TorqueMailbox? IMO this should solve the worst problems. Opening a session with 1000 messages took about 1000 ms. Okay that is also quite slow. The join logic inside Torque is not well optimized. (It uses a nested loop instead of a HashSet which causes n(n+1)/2 iterations) I reimplemented the join logic and opening of 10000 messages needs about 1000 ms now. > If the hack above sounds risky then perhaps it would be wise to consider > altering the MailboxManager API. Perhaps pass through a parameter object > (MailboxConfiguration, say) with mailboxName as a property something like: > > public interface MailboxManager { > ... > ImapMailboxSession getImapMailboxSession(MailboxConfiguration > configuration) throws MailboxManagerException; > ... > } > Then a 'readOnly' property could be added to the configuration object. Given > that the mailbox is not used for writing then it should be safe enough to > postpone loading the cache until needed. STATUS command (and any other > similar ones that happen to have performance issue) could set this property > to true. This would isolate the potential impact of not caching on init(). Opening a session readonly could be an enhancement for the future but I don't think that it's the solution for this problem. It would also be possible to put getNumberCache() at the top of all needed methods of the SessionWrappers. I prefer reviewing the whole number cache thing and running tests before making any decisions concerning changes to the API. At the moment I consider 1000 ms for 10000 messages as reasonable. Which similar ones have you got in mind? Joachim --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]