[
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
|
No problem here. Thanks for figuring this one out.
On Tue, Apr 6, 2010 at 3:47 PM, Robert M. Fuhrer <rfuhrer@xxxxxxxxxxxxxx> 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
>
>
--
Jurgen Vinju
- Centrum Wiskunde & Informatica - SEN1
- INRIA Lille - ATEAMS
- Universiteit van Amsterdam
www: http://jurgen.vinju.org,
http://www.rascal-mpl.nl,http://twitter.com/jurgenvinju
skype: jurgen.vinju