diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-10-15 11:26:51 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-10-15 11:26:51 -0400 |
commit | adfc0973c0e0a2f07e71c33b4cf7ccc3d1efc596 (patch) | |
tree | 362b96fa700214ea7c7daa4e597f86952c6b971b | |
parent | 415f55421992c2eb2b992974d9633eb50d74ab7f (diff) | |
download | mongo-adfc0973c0e0a2f07e71c33b4cf7ccc3d1efc596.tar.gz |
map/reduce cleaning
-rw-r--r-- | jstests/mr1.js | 27 | ||||
-rw-r--r-- | shell/mr.js | 5 |
2 files changed, 24 insertions, 8 deletions
diff --git a/jstests/mr1.js b/jstests/mr1.js index 8408feec5ee..d06137e519b 100644 --- a/jstests/mr1.js +++ b/jstests/mr1.js @@ -9,6 +9,10 @@ t.save( { x : 4 , tags : [ "b" , "c" ] } ); emit = printjson; +function d( x ){ + //printjson( x ); +} + ks = "_id"; if ( db.version() == "1.1.1" ) ks = "key"; @@ -31,15 +35,16 @@ r = function( key , values ){ }; res = db.runCommand( { mapreduce : "mr1" , map : m , reduce : r } ); +d( res ); if ( ks == "_id" ) assert( res.ok , "not ok" ); assert.eq( 4 , res.counts.input , "A" ); x = db[res.result]; assert.eq( 3 , x.find().count() , "B" ); -x.find().forEach( printjson ); +x.find().forEach( d ); z = {}; x.find().forEach( function(a){ z[a[ks]] = a.value.count; } ); -printjson( z ); +d( z ); assert.eq( 3 , z.keySet().length , "C" ); assert.eq( 2 , z.a , "D" ); assert.eq( 3 , z.b , "E" ); @@ -47,6 +52,7 @@ assert.eq( 3 , z.c , "F" ); x.drop(); res = db.runCommand( { mapreduce : "mr1" , map : m , reduce : r , query : { x : { "$gt" : 2 } } } ); +d( res ); assert.eq( 2 , res.counts.input , "B" ); x = db[res.result]; z = {}; @@ -57,7 +63,7 @@ assert.eq( 2 , z.c , "C3" ); x.drop(); res = db.runCommand( { mapreduce : "mr1" , out : "foo" , map : m , reduce : r , query : { x : { "$gt" : 2 } } } ); -printjson( res ); +d( res ); assert.eq( 2 , res.counts.input , "B2" ); assert.eq( "foo" , res.result , "B2-c" ); x = db[res.result]; @@ -75,10 +81,10 @@ for ( i=5; i<1000; i++ ){ } res = db.runCommand( { mapreduce : "mr1" , map : m , reduce : r } ); -printjson( res ); +d( res ); assert.eq( 999 , res.counts.input , "Z1" ); x = db[res.result]; -x.find().forEach( printjson ) +x.find().forEach( d ) assert.eq( 4 , x.find().count() , "Z2" ); assert.eq( "a,b,c,d" , x.distinct( ks ) , "Z3" ); @@ -94,12 +100,16 @@ assert.eq( 3 , getk( "c" ).value.count , "ZC" ); assert.eq( 995 , getk( "d" ).value.count , "ZD" ); x.drop(); -print( Date.timeFunc( +if ( true ){ + printjson( db.runCommand( { mapreduce : "mr1" , map : m , reduce : r , verbose : true } ) ); +} + +print( "t1: " + Date.timeFunc( function(){ var out = db.runCommand( { mapreduce : "mr1" , map : m , reduce : r } ); if ( ks == "_id" ) assert( out.ok , "XXX" ); db[out.result].drop(); - } , 10 ) ); + } , 10 ) + " (~500 on 2.8ghz)" ); @@ -120,7 +130,8 @@ if ( true ){ } res = db.runCommand( { mapreduce : "mr1" , out : "foo" , map : m , reduce : r } ); - printjson( res ); + d( res ); + print( "t2: " + res.timeMillis + " (~3500 on 2.8ghz)" ); x = db[res.result]; z = {}; x.find().forEach( function(a){ z[a[ks]] = a.value.count; } ); diff --git a/shell/mr.js b/shell/mr.js index 7e66fd14b6d..6f7ebd3fc68 100644 --- a/shell/mr.js +++ b/shell/mr.js @@ -7,6 +7,8 @@ MR.init = function(){ $arr = []; emit = MR.emit; $numEmits = 0; + $numReduces = 0; + $numReducesToDB = 0; gc(); // this is just so that keep memory size sane } @@ -28,6 +30,9 @@ MR.emit = function(k,v){ } MR.doReduce = function( useDB ){ + $numReduces++; + if ( useDB ) + $numReducesToDB++; $max = 0; for ( var i=0; i<$arr.length; i++){ var data = $arr[i]; |