More honest benchmark for insert

pull/2/head
Louis Chatriot 12 years ago
parent bae0de018f
commit 77b95ce7dc
  1. 17
      benchmarks/commonUtilities.js
  2. 9
      benchmarks/insert.js

@ -31,17 +31,22 @@ module.exports.prepareDb = function (filename, cb) {
/**
* Return an array with the numbers from 0 to n-1, in a random order
* Uses Fisher Yates algorithm
* Useful to get fair tests
*/
function getRandomArray (n) {
var res, next;
var res = []
, i, j, temp
;
if (n === 0) { return []; }
if (n === 1) { return [0]; }
for (i = 0; i < n; i += 1) { res[i] = i; }
res = getRandomArray(n - 1);
next = Math.floor(Math.random() * n);
res.splice(next, 0, n - 1); // Add n-1 at a random position in the array
for (i = n - 1; i >= 1; i -= 1) {
j = Math.floor((i + 1) * Math.random());
temp = res[i];
res[i] = res[j];
res[j] = temp;
}
return res;
};

@ -21,12 +21,19 @@ console.log("Test with " + n + " documents");
console.log(program.withIndex ? "Use an index" : "Don't use an index");
console.log("----------------------------");
async.waterfall([
async.apply(commonUtilities.prepareDb, benchDb)
, function (cb) {
d.loadDatabase(function (err) {
if (err) { return cb(err); }
if (program.withIndex) { d.ensureIndex({ fieldName: 'docNumber' }); }
if (program.withIndex) {
d.ensureIndex({ fieldName: 'docNumber' });
n = 2 * n; // We will actually insert twice as many documents
// because the index is slower when the collection is already
// big. So the result given by the algorithm will be a bit worse than
// actual performance
}
cb();
});
}

Loading…
Cancel
Save