From e4d1fcfad4c83e39f5c7e961cc2df07e5b5ae267 Mon Sep 17 00:00:00 2001 From: brianc Date: Fri, 4 Feb 2011 18:11:35 -0600 Subject: [PATCH] added large dataset benchmark --- benchmark/large-datatset-bench.js | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 benchmark/large-datatset-bench.js diff --git a/benchmark/large-datatset-bench.js b/benchmark/large-datatset-bench.js new file mode 100644 index 00000000..081bc082 --- /dev/null +++ b/benchmark/large-datatset-bench.js @@ -0,0 +1,83 @@ +var pg = require(__dirname + '/../lib') +var bencher = require('bencher'); +var helper = require(__dirname + '/../test/test-helper') +var conString = helper.connectionString() + +var round = function(num) { + return Math.round((num*1000))/1000 +} + +var doBenchmark = function() { + var bench = bencher({ + name: 'select large sets', + repeat: 10, + actions: [{ + name: 'selecting string', + run: function(next) { + var query = client.query('SELECT name FROM items'); + query.on('end', function() { + next(); + }); + } + }, { + name: 'selecting integer', + run: function(next) { + var query = client.query('SELECT count FROM items'); + query.on('end', function() { + next(); + }) + } + }, { + name: 'selecting date', + run: function(next) { + var query = client.query('SELECT created FROM items'); + query.on('end', function() { + next(); + }) + } + }, { + name: 'selecting row', + run: function(next) { + var query = client.query('SELECT * FROM items'); + query.on('end', function() { + next(); + }) + } + }, { + name: 'loading all rows into memory', + run: function(next) { + var query = client.query('SELECT * FROM items', next); + } + }] + }); + bench(function(result) { + console.log(); + console.log("%s (%d repeats):", result.name, result.repeat) + result.actions.forEach(function(action) { + console.log(" %s: \n average: %d ms\n total: %d ms", action.name, round(action.meanTime), round(action.totalTime)); + }) + client.end(); + }) +} + + +var client = new pg.Client(conString); +client.connect(); +console.log(); +console.log("creating temp table"); +client.query("CREATE TEMP TABLE items(name VARCHAR(10), created TIMESTAMPTZ, count INTEGER)"); +var count = 10000; +console.log("inserting %d rows", count); +for(var i = 0; i < count; i++) { + var query = { + name: 'insert', + text: "INSERT INTO items(name, created, count) VALUES($1, $2, $3)", + values: ["item"+i, new Date(2010, 01, 01, i, 0, 0), i] + }; + client.query(query); +} + +client.once('drain', function() { + console.log('done with insert. executing benchmark.'); + doBenchmark(); +});