This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 146477 - low perfomance of filesystem.
Summary: low perfomance of filesystem.
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Filesystems (show other bugs)
Version: 6.x
Hardware: All All
: P2 blocker (vote)
Assignee: Jiri Skrivanek
URL:
Keywords: PERFORMANCE
Depends on:
Blocks: 145899
  Show dependency tree
 
Reported: 2008-09-08 09:41 UTC by Alexander Simon
Modified: 2008-12-22 10:24 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Simon 2008-09-08 09:41:18 UTC
I see a huge overhead in:
- MIMEResolverImpl$Impl.findMIMEType
- why file system try to resolve mime type of known file?

"Load Open Projects" daemon prio=2 tid=0x5260a000 nid=0x13c8 runnable [0x54efe000..0x54effa14]
   java.lang.Thread.State: RUNNABLE
        at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
        at java.io.File.isFile(File.java:778)
        at org.netbeans.modules.masterfs.filebasedfs.utils.FileInfo.isFile(FileInfo.java:102)
        at org.netbeans.modules.masterfs.filebasedfs.utils.FileInfo.isUNCFolder(FileInfo.java:151)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.getNameExt(BaseFileObj.java:139)
        at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.getNameExt(BaseFileObj.java:117)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:274)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.constructName(FileObject.java:270)
        at org.openide.filesystems.FileObject.getPath(FileObject.java:188)
        at org.netbeans.modules.openide.filesystems.declmime.MIMEResolverImpl$Impl.findMIMEType(MIMEResolverImpl.java:144)
        at org.openide.filesystems.MIMESupport$CachedFileObject.resolveMIME(MIMESupport.java:290)
        at org.openide.filesystems.MIMESupport$CachedFileObject.getMIMEType(MIMESupport.java:278)
        at org.openide.filesystems.MIMESupport.findMIMEType(MIMESupport.java:124)
        at org.openide.filesystems.FileUtil.getMIMETypeOrDefault(FileUtil.java:1134)
        at org.openide.filesystems.FileObject.getMIMEType(FileObject.java:489)
        at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:328)
        at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:477)
        at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:440)
        at org.openide.loaders.DataObject.find(DataObject.java:492)
        at org.netbeans.modules.cnd.makeproject.api.configurations.Item.getDataObject(Item.java:281)
        at org.netbeans.modules.cnd.makeproject.api.configurations.Item.addPropertyChangeListener(Item.java:175)
        at org.netbeans.modules.cnd.makeproject.api.configurations.Item.setFolder(Item.java:170)
        at org.netbeans.modules.cnd.makeproject.api.configurations.Folder.addItem(Folder.java:258)
        at org.netbeans.modules.cnd.makeproject.api.configurations.Folder.addItem(Folder.java:244)
        at
org.netbeans.modules.cnd.makeproject.configurations.ConfigurationXMLCodec.endElement(ConfigurationXMLCodec.java:418)
        at org.netbeans.modules.cnd.api.xml.XMLDecoder.checkEndRecursion(XMLDecoder.java:155)
        at org.netbeans.modules.cnd.api.xml.XMLDecoder._endElement(XMLDecoder.java:114)
        at org.netbeans.modules.cnd.api.xml.XMLDocReader$Parser.endElement(XMLDocReader.java:267)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.
java:2923)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.netbeans.modules.cnd.api.xml.XMLDocReader.read(XMLDocReader.java:133)
        at org.netbeans.modules.cnd.makeproject.configurations.ConfigurationXMLReader.read(ConfigurationXMLReader.java:108)
        at
org.netbeans.modules.cnd.makeproject.api.configurations.ConfigurationDescriptorProvider.getConfigurationDescriptor(ConfigurationD
escriptorProvider.java:95)
        - locked <0x08937050> (a java.lang.Object)
        at
org.netbeans.modules.cnd.makeproject.ui.MakeLogicalViewProvider.getMakeConfigurationDescriptor(MakeLogicalViewProvider.java:777)
        at
org.netbeans.modules.cnd.makeproject.ui.MakeLogicalViewProvider.createLogicalView(MakeLogicalViewProvider.java:152)
        at org.netbeans.modules.project.ui.ProjectsRootNode$ProjectChildren.logicalViewForProject(ProjectsRootNode.java:300)
        at org.netbeans.modules.project.ui.ProjectsRootNode$BadgingNode.propertyChange(ProjectsRootNode.java:652)
        at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:186)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
        at org.netbeans.modules.project.ui.OpenProjectList$LoadOpenProjects.loadOnBackground(OpenProjectList.java:352)
        at org.netbeans.modules.project.ui.OpenProjectList$LoadOpenProjects.run(OpenProjectList.java:270)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Comment 1 Jiri Skrivanek 2008-09-08 12:42:43 UTC
I did some performance improvements together with issue 137734. Please, try latest daily build and if problems persists,
re-open issue and provide testing project or snapshot from profiler. Thanks.
Comment 2 Vladimir Voskresensky 2008-09-08 13:38:52 UTC
As I understand within http://www.netbeans.org/issues/show_bug.cgi?id=137734 you have introduced FileUtil.getMIMEType to
pass mime-types
may be you need to introduce same method in DataObject to speed up clients:
 DataObject.find(fo, String... withinMIMETypes)

Comment 3 Jiri Skrivanek 2008-09-08 13:58:36 UTC
There were also improvements in the code not related directly to the new method. It should be faster even without
changes in your code.
If you want to benefit from the new method, you can firstly filter FileObjects by their MIME type and then create
DataObject only for filtered ones.