summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2009-10-15 11:26:51 -0400
committerEliot Horowitz <eliot@10gen.com>2009-10-15 11:26:51 -0400
commitadfc0973c0e0a2f07e71c33b4cf7ccc3d1efc596 (patch)
tree362b96fa700214ea7c7daa4e597f86952c6b971b
parent415f55421992c2eb2b992974d9633eb50d74ab7f (diff)
downloadmongo-adfc0973c0e0a2f07e71c33b4cf7ccc3d1efc596.tar.gz
map/reduce cleaning
-rw-r--r--jstests/mr1.js27
-rw-r--r--shell/mr.js5
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];