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.
MdrStorage uses SinglevaluedIndex as a contract how to access underlying database. SinglevaluedIndex use key of type Object but our implementation of SinglevaluedIndex is a BtreeDatabase where we expect MOFID and it means that although we already have a MOFID the typical call tree looks like: MdrStorage.getObject(MOFID) -> BtreeDatabase.getIfExists(Object) -> BtreeDatabase.makeMOFID(Object) -> BtreeDatabase.getIfExists(MOFID) The result is thousands of method calls for each reparse / for each CC request. Tens of thousands during start.
Checking in BtreeDatabase.java; /cvs/mdr/src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/BtreeDatabase.java,v <-- BtreeDatabase.java new revision: 1.26; previous revision: 1.25
If you're bounded by the Index interface, why don't you delete the MOFID variants of the method and place the body into the Object variant? hotspot may (or may not, the class is not even final) inline it but I won't be so sure and there is very little usage of the MOFID variant...
Done. Checking in BtreeDatabase.java; /cvs/mdr/src/org/netbeans/mdr/persistence/btreeimpl/btreestorage/BtreeDatabase.java,v <-- BtreeDatabase.java new revision: 1.28; previous revision: 1.27