ManagingReferenceOrderedView optimization: don't allow a fresh RefMetaDataTracker in the frequent case where there's no reference meta data

This commit is contained in:
Mark DePristo 2013-01-13 20:44:28 -05:00
parent 7eea6b8f92
commit b8b2b9b2de
2 changed files with 10 additions and 5 deletions

View File

@ -77,13 +77,17 @@ public class ManagingReferenceOrderedView implements ReferenceOrderedView {
* @return A tracker containing information about this locus.
*/
public RefMetaDataTracker getReferenceOrderedDataAtLocus( GenomeLoc loc, ReferenceContext referenceContext ) {
List<RODRecordList> bindings = states.isEmpty() ? Collections.<RODRecordList>emptyList() : new ArrayList<RODRecordList>(states.size());
if ( states.isEmpty() )
return RefMetaDataTracker.EMPTY_TRACKER;
else {
List<RODRecordList> bindings = new ArrayList<RODRecordList>(states.size());
for ( ReferenceOrderedDataState state: states )
// todo -- warning, I removed the reference to the name from states
bindings.add( state.iterator.seekForward(loc) );
for ( ReferenceOrderedDataState state: states )
// todo -- warning, I removed the reference to the name from states
bindings.add( state.iterator.seekForward(loc) );
return new RefMetaDataTracker(bindings);
return new RefMetaDataTracker(bindings);
}
}
/**

View File

@ -61,6 +61,7 @@ public class RefMetaDataTracker {
final Map<String, RODRecordList> bindings;
final protected static Logger logger = Logger.getLogger(RefMetaDataTracker.class);
public final static RefMetaDataTracker EMPTY_TRACKER = new RefMetaDataTracker();
// ------------------------------------------------------------------------------------------
//