> namespace.Topics.SortBy
> { each |
>       DateTime.Now.SpanBetween(each.LastModified)
> }

OK, I think I can see why this is so slow. The issue is that
each.LastModified translates into a call of
Federation.GetTopicModificationTime. But when doing a SortBy, each element
is going to be compared *many time* to its neighbors, resulting in dozens
and dozens of calls into the Federation, with all the security checking and
whatnot that implies. Even though it's hitting cache, it's still going to be
expensive. 

The easy fix for this is to change methods like this (on TopicInfo): 

[ExposedMethod(ExposedMethodFlags.Default, "Answer a DateTime inndicating
when the topic was last modified")]
public DateTime LastModified
{
   get
   {
       return Federation.GetTopicModificationTime(TopicRevision);
   }
}

To something like this: 

[ExposedMethod(ExposedMethodFlags.Default, "Answer a DateTime inndicating
when the topic was last modified")]
public DateTime LastModified
{
   get
   {
       if (!_haveLastModified) 
       { 
           _lastModified =
Federation.GetTopicModificationTime(TopicRevision);
           _haveLastModified = true; 
       }

       return _lastModified; 
   }
}

Yeah, that should help *a lot*. Freakin' awesome if it does, too, because
it's dead simple and doesn't require any architectural changes. :) 

I'll start making some of these changes today and see what effect it has.
I'm extremely optimistic. 



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Flexwiki-users mailing list
Flexwiki-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flexwiki-users

Reply via email to