Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [imp-dev] Small API change needed to improve performance of message/annotation handling

Fantastic!  We've had problems with this.  (It doesn't take much to
generate a lot of errors in our source programs.)
Beverly


On Tue, April 6, 2010 9:47 am, Robert M. Fuhrer wrote:
> Hi Everyone,
>
> Problem:
>
> I just did some performance diagnosis/tuning work relating to
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=281359
>   . In a nutshell, when there were many error annotations on a source
> file, say, many dozens or hundreds, the editor became unusably slow.
>
> Diagnosis:
>
> The main problem was that each message produced by
> IParseController.parse() was directly applied as an "annotation model"
> update, via calls to Eclipse JFace text API methods. Since UI updates
> are driven by annotation model listeners, this approach caused many
> unnecessary UI updates; hence the slowdown.
>
> Solution:
>
> Luckily, I've discovered an extension to the IAnnotationModel
> interface – IAnnotationModelExtension, which has extra API calls that
> allow you to submit a group of annotation changes as a single batch.
> The result is that rather than updating the model, and most
> importantly, all the annotation model listeners, with each new
> Annotation, this cycle happens just once. The performance improvement
> is rather dramatic: orders of magnitude.
>
> Proposed IMP API change:
>
> To achieve the full improvement described above, though, requires a
> small API change to IMP's IMessageHandler interface, which doesn't
> presently have an API call to notify when the producer of messages is
> finished producing messages from a parsing/analysis session.
>
> In particular, I'd like to add the following method:
>
>    public interface IMessageHandler {
>       // ...
>       /**
>        * Marks the end of a session of messages.
>        */
>       void endMessages();
>      // ...
>    }
>
> Now, most of the implementations of IMessageHandler that I'm aware of
> are in IMP itself, which consumes the diagnostic output of an
> IParseController implementation. So, I'd expect that the impact of
> such an API change would be negligible, if anything.
>
> That said, technically, this would be a breaking API change, so I need
> to ask you all whether this will cause you any problem.
>
> Comments?
>
> --
> Cheers,
>    -- Bob
> --------------------------------
> Robert M. Fuhrer
> Research Staff Member
> Programming Technologies Dept.
> IBM T.J. Watson Research Center
>
> IMP Team Lead (http://www.eclipse.org/imp)
> X10: Productivity for High-Performance Parallel Programming
> (http://x10-lang.org
> )
>
> _______________________________________________
> imp-dev mailing list
> imp-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/imp-dev
>


-- 
Beverly A. Sanders, Ph.D.
Associate Professor
Department of Computer & Information Science & Engineering
P.O. Box 116120
University of Florida
Gainesville, FL 32611-6120
www.cise.ufl.edu/~sanders
tel: (352) 450-9213
fax: (352) 392-1220



Back to the top