Skip to content

Instantly share code, notes, and snippets.

@guybrush
Created November 24, 2010 15:17
Show Gist options
  • Save guybrush/713794 to your computer and use it in GitHub Desktop.
Save guybrush/713794 to your computer and use it in GitHub Desktop.
/***************************
benchmark nstore.get(id) versus nstore.find({id:id})
{ 'randomID1' : { 1 :
{ id : '1' { title : 'title1'
, title : 'title1' , content : 'content1'
, content : 'content1' }
} , 2 :
, 'randomID2' { title : 'title2'
{ id : '2' , content : 'content2'
, title : 'title2' }
, content : 'content2' };
}
};
*****************************/
var nstore = require('nstore')
, step = require('step')
, start, t1, t2;
var db = nstore.new(__dirname+'/data.db', function() {
step(
function(){
var group1 = this.group();
var group2 = this.group();
for (var i=1; i<=1000; i++) {
db.save(null, {id:i,title:'title'+i,content:'content'+i}, group1())
db.save(i, {title:'title'+i,content:'content'+i}, group2())
}
},
function(err) {
if (err) console.log(err);
var group = this.group();
start = Date.now();
for (var i=1; i<=1000; i++)
db.get(i, group());
t1 = Date.now();
console.log('db.get() done');
},
function(err) {
if (err) console.log(err);
var group = this.group();
for (var i=1; i<=1000; i++)
db.find({id:i}, group());
t2 = Date.now();
console.log('db.find() done');
},
function(err) {
if (err) console.log(err);
//db.clear(function(err){err && console.log(err)});
console.log('db.get(id): '+(t1-start)+'ms');
console.log('db.find({id:id)): '+(t2-t1)+'ms');
}
);
});
/*********************************************
{ message: [Getter/Setter],
stack: [Getter/Setter],
type: 'not_defined',
arguments: [ 'group2' ] }
db.get() done
{ message: 'Document does not exist for 1000',
stack: [Getter/Setter],
errno: undefined }
{ message: [Getter/Setter],
stack: [Getter/Setter],
type: 'undefined_method',
arguments:
[ 'find',
{ filename: '/home/patrick/data.db',
fd: 5,
index: [Object],
toWriteCallbacks: [],
toWrite: {},
isWriting: [Object],
stale: 0,
dbLength: 614362,
busy: true,
filterFn: null } ] }
node.js:50
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object #<an Object> has no method 'clear'
at Function.<anonymous> (/home/patrick/nstore.test.js:53:10)
at next (/home/patrick/.node_libraries/.npm/step/0.0.3/package/lib/step.js:49:23)
at next (/home/patrick/.node_libraries/.npm/step/0.0.3/package/lib/step.js:52:7)
at check (/home/patrick/.node_libraries/.npm/step/0.0.3/package/lib/step.js:71:14)
at /home/patrick/.node_libraries/.npm/step/0.0.3/package/lib/step.js:85:7
at Array.check (/home/patrick/.node_libraries/.npm/step/0.0.3/package/lib/step.js:103:11)
at EventEmitter._tickCallback (node.js:42:22)
at node.js:634:9
*********************************************/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment