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]

Reply via email to