[SERVER-7422] Optimize FieldRangeSet::range() Created: 19/Oct/12  Updated: 02/May/14  Resolved: 02/May/14

Status: Closed
Project: Core Server
Component/s: Index Maintenance, Performance, Sharding
Affects Version/s: 2.2.0
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Ben Becker Assignee: Unassigned
Resolution: Won't Fix Votes: 0
Labels: indexing, performance, sharding
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

All


Issue Links:
Related
is related to SERVER-7331 Optimize mongos performance Closed
Participants:

 Description   

Replace 3 O(log n) operations with 1 for mutable FieldRange objects:

     inline FieldRange &FieldRangeSet::range( const char *fieldName ) {
-        map<string,FieldRange>::iterator f = _ranges.find( fieldName );
-        if ( f == _ranges.end() ) {
-            _ranges.insert( make_pair( string( fieldName ), universalRange() ) );
-            return _ranges.find( fieldName )->second;
-        }
-        return f->second;
+        return _ranges.insert(make_pair(string(fieldName), universalRange())).first->second;
     }

Should help mongos and mongod – see 'nolog' call graphs in SERVER-7331.



 Comments   
Comment by Greg Studer [ 02/May/14 ]

This code has been superseded.

Generated at Thu Feb 08 03:14:29 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.