Summary: | Reading index header is not buffered | ||||||
---|---|---|---|---|---|---|---|
Product: | [Eclipse Project] JDT | Reporter: | John Arthorne <john.arthorne> | ||||
Component: | Core | Assignee: | Frederic Fusier <frederic_fusier> | ||||
Status: | VERIFIED DUPLICATE | QA Contact: | |||||
Severity: | normal | ||||||
Priority: | P3 | CC: | eric_jodet | ||||
Version: | 3.2 | Keywords: | performance | ||||
Target Milestone: | 3.3 M6 | ||||||
Hardware: | PC | ||||||
OS: | Windows 2000 | ||||||
Whiteboard: | |||||||
Attachments: |
|
Description
John Arthorne
2006-07-17 13:24:23 EDT
Created attachment 46381 [details]
filemon trace output
From a quick look at the source, I think this may be happening in DiskIndex.readHeaderInfo. Since it uses RandomAccessFile, it is reading using unbuffered input. Most damaging is the Util.readUTF() method that is reading UTF strings one byte at a time. With unbuffered input this is quite expensive (the disk will likely have a cache, but still costs an OS call, etc). One solution is to use something like BufferedRandomInputStream in org.eclipse.equinox.registry to get buffered random access to this file. Bug 171653 should have been set as duplicate of this one. We missed it while working on it... *** This bug has been marked as a duplicate of bug 171653 *** Verified for 3.3 M6 using build I20070320-0010 |