diff --git a/benchmark/js-versus-native-bench.js b/benchmark/js-versus-native-bench.js new file mode 100644 index 00000000..b65fb98c --- /dev/null +++ b/benchmark/js-versus-native-bench.js @@ -0,0 +1,68 @@ +var pg = require(__dirname + '/../lib') +var pgNative = require(__dirname + '/../lib/native'); +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: 'js/native compare', + repeat: 1000, + actions: [{ + name: 'javascript client - simple query', + run: function(next) { + var query = client.query('SELECT name, age FROM person WHERE age > 10'); + query.on('end', function() { + next(); + }); + } + },{ + name: 'native client - simple query', + run: function(next) { + var query = nativeClient.query('SELECT name FROM person WHERE age > $1', [10]); + query.on('end', function() { + next(); + }); + } + }, { + name: 'javascript client - parameterized query', + run: function(next) { + var query = client.query('SELECT name, age FROM person WHERE age > $1', [10]); + query.on('end', function() { + next(); + }); + } + },{ + name: 'native client - parameterized query', + run: function(next) { + var query = nativeClient.query('SELECT name, age FROM person WHERE age > $1', [10]); + query.on('end', function() { + 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(); + nativeClient.end(); + }) +} + +var client = new pg.Client(conString); +var nativeClient = new pgNative.Client(conString); +client.connect(); +client.on('connect', function() { + nativeClient.connect(); + nativeClient.on('connect', function() { + doBenchmark(); + }); +});