65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
/**
|
|
* Performance tests for removing ojects
|
|
*/
|
|
|
|
var removals = 100;
|
|
var size = 500000;
|
|
var collection_name = "remove_test";
|
|
var msg = "Hello from remove test";
|
|
|
|
function testSetup(dbConn) {
|
|
var t = dbConn[collection_name];
|
|
t.drop();
|
|
t.ensureIndex({num: 1});
|
|
|
|
for (var i = 0; i < size; i++) {
|
|
t.save({num: i, msg: msg});
|
|
}
|
|
}
|
|
|
|
function between(low, high, val, msg) {
|
|
assert(low < val, msg);
|
|
assert(val < high, msg);
|
|
}
|
|
|
|
/**
|
|
* Compares difference of removing objects from a collection if only includes
|
|
* field that's indexed, vs w/ additional other fields
|
|
*
|
|
* @param dbConn
|
|
*/
|
|
function testRemoveWithMultiField(dbConn) {
|
|
var results = {};
|
|
var t = dbConn[collection_name];
|
|
|
|
testSetup(dbConn);
|
|
|
|
t.remove({num: 0});
|
|
results.indexOnly = Date.timeFunc(function() {
|
|
for (var i = 1; i < removals; i++) {
|
|
t.remove({num: i});
|
|
}
|
|
|
|
t.findOne();
|
|
});
|
|
|
|
testSetup(dbConn);
|
|
|
|
t.remove({num: 0, msg: msg});
|
|
results.withAnother = Date.timeFunc(function() {
|
|
for (var i = 1; i < removals; i++) {
|
|
t.remove({num: i, msg: msg});
|
|
}
|
|
|
|
t.findOne();
|
|
});
|
|
|
|
between(0.65,
|
|
1.35,
|
|
(results.indexOnly / results.withAnother),
|
|
"indexOnly / withAnother (" + results.indexOnly + " / " + results.withAnother +
|
|
" ) = " + results.indexOnly / results.withAnother + " not in [0.65, 1.35]");
|
|
}
|
|
|
|
testRemoveWithMultiField(db);
|