Bug 217059 - Regression in Model performance test testProjectFindUnknownType()
Summary: Regression in Model performance test testProjectFindUnknownType()
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.4   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: 3.4 M5   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance, test
Depends on:
Blocks:
 
Reported: 2008-01-30 04:52 EST by Frederic Fusier CLA
Modified: 2008-02-05 07:43 EST (History)
2 users (show)

See Also:


Attachments
Proposed fix and performance test (7.02 KB, patch)
2008-02-01 07:14 EST, Jerome Lanneluc CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Frederic Fusier CLA 2008-01-30 04:52:13 EST
Test testProjectFindUnknownType() of org.eclipse.jdt.core.tests.performance.FullSourceWorkspaceModelTests shows
a big regression since I20071218-0800. I missed it since then as this test was not on the fingerprint :-(

Here are the numbers:
RHEL 4.0 Sun 1.4.2_10 (3 GHz 2.5 GB): -28.7% [±1.0]
Win XP Sun 1.4.2_10 (3 GHz 2 GB):     -18.0% [±1.0]
RHEL 3.0 Sun 1.4.2_10 (3 GHz 2 GB):   -8.5% [±0.4]
Win XP Sun 1.4.2_10 (2 GHz 512 MB):   -15.4% [±1.1]
RHEL 3.0 Sun 1.4.2_10 (2 GHz 512 MB): -24.6% [±2.1]
Comment 1 Frederic Fusier CLA 2008-01-30 04:57:20 EST
The regression appears between builds N20071216-0010 and I20071218-0800 and my first investigation in history shows that only ClasspathChangeOperation changed in the JavaModel between these two builds (fix for bug 212769).
Comment 2 Jerome Lanneluc CLA 2008-01-30 11:39:27 EST
Fix for bug 212769 was backported in 3.3.2. Targeting 3.3.2 and investigating...
Comment 3 Jerome Lanneluc CLA 2008-01-30 12:48:52 EST
I verified that none of code that was released between v_829 and v_830 is called by the performance test.

Investigating if something changed under us...
Comment 4 Jerome Lanneluc CLA 2008-01-31 12:12:25 EST
The change in ClasspathChangeOperation (resetting the project cache) is in fact the cause of the regression. The problem is that the ProjectCache that is recreated is not as efficient as the first one (PackageFragmentRoot handles are no longer identical with the ones in the JavaModelCache). Thus lookups take a little be more time.

Note that the scenario tested here is finding an unknown type during name lookup. The time to find unknown types during name lookup is negligeable comparing to the the time to find known types. Clients will not be impacted by this regression. So we will not fix for 3.3.2. The test will simply be commented so that it appears gray.
Comment 5 Jerome Lanneluc CLA 2008-02-01 07:14:06 EST
Created attachment 88536 [details]
Proposed fix and performance test
Comment 6 Jerome Lanneluc CLA 2008-02-01 11:56:54 EST
Fix and performance test released for 3.4M5 in HEAD.
Performance test released in perf_33x as well.
Comment 7 David Audel CLA 2008-02-05 07:43:03 EST
Verified for 3.4M5 using build I20080204-0010.