From 3303dc735e81e6921320facc290712dee92c9ad5 Mon Sep 17 00:00:00 2001 From: Michael Pisarski Date: Fri, 5 Apr 2013 22:03:18 -0400 Subject: [PATCH 1/2] Upgrade to latest npm pagackages and resolve code conflicts, run tests as of 4/5/2013 * mysql - 2.0.0-alpha7 * squelize - 1.6.0 * node-orm - 2.0.7 --- README.md | 36 ++++++++++++++++++++++++++++++++++++ mysql.js | 11 +++++------ node-orm.js | 14 ++++++++------ package.json | 6 +++--- 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 26b5dac..4461d2b 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,42 @@ The tests are using the database `performance_analysis_sequelize` with the user bundle ruby sh/performance-test.rb +## Test-results on small vm (1GB Ram, 2 Cores) Centos 5.3 (test ran on 4/5/2013) + + node-mysql#insertSerially (2 runs): 1104.5ms + node-mysql#insertAsync (2 runs): 953ms + node-mysql#updateSerially (2 runs): 1208ms + node-mysql#updateAsync (2 runs): 830ms + node-mysql#read (2 runs): 10ms + node-mysql#deleteSerially (2 runs): 1000ms + node-mysql#deleteAsync (2 runs): 492ms + + node-orm#insertSerially (2 runs): 583ms + node-orm#insertAsync (2 runs): 507ms + node-orm#updateSerially (2 runs): 585ms + node-orm#updateAsync (2 runs): 460.5ms + node-orm#read (2 runs): 16ms + node-orm#deleteSerially (2 runs): 596ms + node-orm#deleteAsync (2 runs): 431ms + + persistencejs#insertSerially (2 runs): 1906.5ms + persistencejs#insertAsync (2 runs): 614.5ms + persistencejs#updateSerially (2 runs): 1543ms + persistencejs#updateAsync (2 runs): 13.5ms + persistencejs#read (2 runs): 614.5ms + persistencejs#deleteSerially (2 runs): 2051ms + persistencejs#deleteAsync (2 runs): 597.5ms + + sequelize#insertSerially (2 runs): 2137ms + sequelize#insertAsync (2 runs): 715ms + sequelize#updateSerially (2 runs): 2220.5ms + sequelize#updateAsync (2 runs): 704.5ms + sequelize#read (2 runs): 22ms + sequelize#deleteSerially (2 runs): 2353ms + sequelize#deleteAsync (2 runs): 587.5ms + + no ruby tests... + ## Test-results on ec2 micro instance (ami-cb340abf) node-mysql#insertSerially (25 runs): 9898.8ms diff --git a/mysql.js b/mysql.js index 5f2b639..4529a55 100644 --- a/mysql.js +++ b/mysql.js @@ -2,11 +2,15 @@ const MySQL = require("mysql") var LIMIT = 10000 -var client = MySQL.createClient({ +var client = MySQL.createConnection({ + multipleStatements: true, + host: 'localhost', user: 'root', database: 'performance_analysis_sequelize' }) +client.connect() + var createTable = function(callback) { var sql = "DROP TABLE IF EXISTS `Entries`;CREATE TABLE IF NOT EXISTS `Entries` (`number` INTEGER, `string` VARCHAR(255), `id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;" client.query(sql, function(err, results, fields) { @@ -99,11 +103,6 @@ var testRead = function(testReadCallback) { , sql = 'SELECT * FROM Entries' , duration = null - client = MySQL.createClient({ - user: 'root', - database: 'performance_analysis_sequelize' - }) - client.query(sql, function(err, results, fields) { if(err) throw new Error(err) diff --git a/node-orm.js b/node-orm.js index 771b9c7..29d4f47 100644 --- a/node-orm.js +++ b/node-orm.js @@ -9,10 +9,12 @@ module.exports = function(times, limit, runCallback) { LIMIT = limit var runTestsOnce = function(callback) { - orm.connect(server, function(success, db) { + orm.connect(server, function(err, db) { + if (err) throw err; + var Entry = db.define('EntryORM', { - number: { type: 'integer' }, - string: { type: 'string' } + number: { type: 'number' }, + string: { type: 'text' } }) var testInserts = function(async, testInsertsCallback, disableLogging) { @@ -56,7 +58,7 @@ module.exports = function(times, limit, runCallback) { } var testUpdates = function(async, testUpdatesCallback) { - Entry.find(function(entries) { + Entry.find(function(err, entries) { var done = 0 , start = +new Date() , duration = null @@ -99,7 +101,7 @@ module.exports = function(times, limit, runCallback) { var start = +new Date , duration = null - Entry.find(function(entries) { + Entry.find(function(err, entries) { duration = (+new Date) - start console.log('Reading ' + entries.length + ' database entries took ' + duration + 'ms') testReadCallback && testReadCallback(duration) @@ -108,7 +110,7 @@ module.exports = function(times, limit, runCallback) { var testDelete = function(async, testDeleteCallback) { testInserts(true, function() { - Entry.find(function(entries) { + Entry.find(function(err, entries) { var done = 0 , start = +new Date() , duration = null diff --git a/package.json b/package.json index 00a13a1..7b39c37 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ "node": "~0.6.2" }, "dependencies": { - "mysql": "0.9.5", - "sequelize": "1.3.1", - "orm": "0.1.8-3" + "mysql": "2.0.0-alpha7", + "sequelize": "~1.6.0", + "orm": "~2.0.0" }, "devDependencies": {} } From 77215306364283357ace46919aa8d0fdb145757a Mon Sep 17 00:00:00 2001 From: Michael Pisarski Date: Fri, 5 Apr 2013 22:26:29 -0400 Subject: [PATCH 2/2] Test results updated with 25 runs... --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 4461d2b..77412c7 100644 --- a/README.md +++ b/README.md @@ -17,37 +17,37 @@ The tests are using the database `performance_analysis_sequelize` with the user ## Test-results on small vm (1GB Ram, 2 Cores) Centos 5.3 (test ran on 4/5/2013) - node-mysql#insertSerially (2 runs): 1104.5ms - node-mysql#insertAsync (2 runs): 953ms - node-mysql#updateSerially (2 runs): 1208ms - node-mysql#updateAsync (2 runs): 830ms - node-mysql#read (2 runs): 10ms - node-mysql#deleteSerially (2 runs): 1000ms - node-mysql#deleteAsync (2 runs): 492ms - - node-orm#insertSerially (2 runs): 583ms - node-orm#insertAsync (2 runs): 507ms - node-orm#updateSerially (2 runs): 585ms - node-orm#updateAsync (2 runs): 460.5ms - node-orm#read (2 runs): 16ms - node-orm#deleteSerially (2 runs): 596ms - node-orm#deleteAsync (2 runs): 431ms - - persistencejs#insertSerially (2 runs): 1906.5ms - persistencejs#insertAsync (2 runs): 614.5ms - persistencejs#updateSerially (2 runs): 1543ms - persistencejs#updateAsync (2 runs): 13.5ms - persistencejs#read (2 runs): 614.5ms - persistencejs#deleteSerially (2 runs): 2051ms - persistencejs#deleteAsync (2 runs): 597.5ms - - sequelize#insertSerially (2 runs): 2137ms - sequelize#insertAsync (2 runs): 715ms - sequelize#updateSerially (2 runs): 2220.5ms - sequelize#updateAsync (2 runs): 704.5ms - sequelize#read (2 runs): 22ms - sequelize#deleteSerially (2 runs): 2353ms - sequelize#deleteAsync (2 runs): 587.5ms + node-mysql#insertSerially (25 runs): 1061.36ms + node-mysql#insertAsync (25 runs): 912.08ms + node-mysql#updateSerially (25 runs): 1093.96ms + node-mysql#updateAsync (25 runs): 819.32ms + node-mysql#read (25 runs): 9.24ms + node-mysql#deleteSerially (25 runs): 1069.08ms + node-mysql#deleteAsync (25 runs): 490.56ms + + node-orm#insertSerially (25 runs): 678ms + node-orm#insertAsync (25 runs): 584.28ms + node-orm#updateSerially (25 runs): 628.88ms + node-orm#updateAsync (25 runs): 528.64ms + node-orm#read (25 runs): 16.64ms + node-orm#deleteSerially (25 runs): 663ms + node-orm#deleteAsync (25 runs): 556.6ms + + persistencejs#insertSerially (25 runs): 2677ms + persistencejs#insertAsync (25 runs): 2177.84ms + persistencejs#updateSerially (25 runs): 2656.16ms + persistencejs#updateAsync (25 runs): 15.8ms + persistencejs#read (25 runs): 709.48ms + persistencejs#deleteSerially (25 runs): 4573.24ms + persistencejs#deleteAsync (25 runs): 799.6ms + + sequelize#insertSerially (25 runs): 2473.76ms + sequelize#insertAsync (25 runs): 943.88ms + sequelize#updateSerially (25 runs): 2359.12ms + sequelize#updateAsync (25 runs): 860.24ms + sequelize#read (25 runs): 27.32ms + sequelize#deleteSerially (25 runs): 2090.2ms + sequelize#deleteAsync (25 runs): 810.32ms no ruby tests...