Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 317098

Summary: [context] Performance: move dependency information from Computation to Context
Product: z_Archived Reporter: Oleg Besedin <ob1.eclipse>
Component: E4Assignee: Project Inbox <e4.runtime-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Patch 1 - cleanup before the change none

Description Oleg Besedin CLA 2010-06-16 14:28:57 EDT
Whenever a value changes in the EclipseContext, it notifies all listeners of the change. 

The listeners then can check the name of the update value and decide if they need to recompute their values. 

This does not scale all that well and results in ~300K calls to Computation.handleInvalid() on simple switch between two editors. Each call is quick, but still has to do lookups in HashMap / HashSet. That time adds up, resulting in roughly 25% of the time used to switch between editors.

I'd like to change the way we store dependency information for context values: store it in the contexts organized by names so that only affected Computation elements get called.
Comment 1 Oleg Besedin CLA 2010-06-16 14:30:24 EDT
Created attachment 172064 [details]
Patch 1 - cleanup before the change

This patch cleans up and re-organizes Computation code so that it is easier to read.