Commit e631a8e4 by Orlando Vazquez

Add naïve speed test for Nóde and Rųby

Do some minor cleanup and fixes.
minor fixes and cleanups
parent e79ff0c4
require 'sqlite3'
db = SQLite3::Database.new(":memory:")
db.execute("CREATE TABLE t1 (alpha INTEGER)") do |row|
end
count = 100000;
t0 = Time.new;
1.upto(count) do
db.execute("INSERT INTO t1 VALUES (1)") do
end
end
d = Time.new - t0;
puts "Took #{d}s (#{count/d} inserts/s)";
t0 = Time.new;
db.execute("SELECT * FROM t1") do |row|
end
d = Time.new - t0;
puts "Took #{d} (#{count/d} rows/s)";
......@@ -98,20 +98,20 @@ Database.prototype.executeQuery = function(sql, bindings, queryCallback) {
}
function doStep(statement) {
var innerFunction = function () {
(function innerFunction() {
statement.step(function (error, row) {
if (error) throw error;
if (!row) {
// rows.rowsAffected = this.changes();
// rows.insertId = this.lastInsertRowid();
queryCallback();
queryDone(statement);
return;
}
queryCallback(row);
innerFunction();
});
};
innerFunction();
})();
}
function onPrepare(error, statement) {
......
......@@ -161,10 +161,10 @@ protected:
int rc = sqlite3_open(open_req->filename, dbptr);
req->result = rc;
sqlite3 *db = *dbptr;
sqlite3_commit_hook(db, CommitHook, open_req->dbo);
sqlite3_rollback_hook(db, RollbackHook, open_req->dbo);
sqlite3_update_hook(db, UpdateHook, open_req->dbo);
// sqlite3 *db = *dbptr;
// sqlite3_commit_hook(db, CommitHook, open_req->dbo);
// sqlite3_rollback_hook(db, RollbackHook, open_req->dbo);
// sqlite3_update_hook(db, UpdateHook, open_req->dbo);
return 0;
}
......@@ -290,28 +290,28 @@ protected:
// Hooks
static int CommitHook(void* v_this) {
HandleScope scope;
Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
db->Emit(String::New("commit"), 0, NULL);
// TODO: allow change in return value to convert to rollback...somehow
return 0;
}
static void RollbackHook(void* v_this) {
HandleScope scope;
Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
db->Emit(String::New("rollback"), 0, NULL);
}
static void UpdateHook(void* v_this, int operation, const char* database,
const char* table, sqlite_int64 rowid) {
HandleScope scope;
Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
Local<Value> args[] = { Int32::New(operation), String::New(database),
String::New(table), Number::New(rowid) };
db->Emit(String::New("update"), 4, args);
}
// static int CommitHook(void* v_this) {
// HandleScope scope;
// Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
// db->Emit(String::New("commit"), 0, NULL);
// // TODO: allow change in return value to convert to rollback...somehow
// return 0;
// }
//
// static void RollbackHook(void* v_this) {
// HandleScope scope;
// Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
// db->Emit(String::New("rollback"), 0, NULL);
// }
//
// static void UpdateHook(void* v_this, int operation, const char* database,
// const char* table, sqlite_int64 rowid) {
// HandleScope scope;
// Sqlite3Db* db = static_cast<Sqlite3Db*>(v_this);
// Local<Value> args[] = { Int32::New(operation), String::New(database),
// String::New(table), Number::New(rowid) };
// db->Emit(String::New("update"), 4, args);
// }
struct prepare_request {
Persistent<Function> cb;
......@@ -354,6 +354,7 @@ protected:
}
prep_req->cb.Dispose();
free(prep_req);
prep_req->dbo->Unref();
......@@ -813,7 +814,6 @@ protected:
return 0;
}
static int EIO_Step(eio_req *req) {
struct step_request *step_req = (struct step_request *)(req->data);
Statement *sto = step_req->sto;
......
......@@ -6,61 +6,44 @@ var sqlite = require("./sqlite");
var db = new sqlite.Database();
// db.open("mydatabase.db", function () {
// puts("opened the db");
// db.query("SELECT * FROM foo WHERE baz < ? AND baz > ?", [6, 3], function (error, result) {
// ok(!error);
// puts("query callback " + inspect(result));
// equal(result.length, 2);
// });
// // db.query("SELECT 1", function (error, result) {
// // ok(!error);
// // puts("query callback " + inspect(result));
// // equal(result.length, 1);
// // });
// });
function readTest(db) {
function readTest(db, callback) {
var t0 = new Date;
var count = i = 100;
var rows = 0;
var innerFunc = function () {
if (!i--) {
db.query("SELECT * FROM t1", function(row) {
if (!row) {
var d = ((new Date)-t0)/1000;
puts("**** " + count + " selects in " + d + "s (" + (count/d) + "/s) "+rows+" rows total ("+(rows/d)+" rows/s)");
return;
}
puts("**** " + rows + " rows in " + d + "s (" + (rows/d) + "/s)");
db.query("SELECT * FROM t1", function(error, results) {
rows = rows + results.length;
innerFunc();
if (callback) callback(db);
}
else {
rows++;
}
});
};
innerFunc();
}
function writeTest(db, callback) {
var t0 = new Date;
var count = i = 10000;
var innerFunc = function () {
if(!i--) {
var d = ((new Date)-t0)/1000;
puts("**** " + count + " insertions in " + d + "s (" + (count/d) + "/s)");
var count = i = 100000;
callback(db);
return;
};
function innerFunction () {
db.query("INSERT INTO t1 VALUES (1)", function (row) {
if (!i-- && !row) {
// end of results
var dt = ((new Date)-t0)/1000;
puts("**** " + count + " insertions in " + dt + "s (" + (count/dt) + "/s)");
db.query("INSERT INTO t1 VALUES (?);", [1], function() {
innerFunc();
if (callback) callback(db);
}
else {
innerFunction();
}
});
};
innerFunc();
}
innerFunction();
}
fs.unlink("speedtest.db", function () {
db.open("speedtest.db", function () {
db.open(":memory:", function () {
puts(inspect(arguments));
puts("open cb");
......@@ -68,6 +51,4 @@ fs.unlink("speedtest.db", function () {
puts("create table callback" + inspect(arguments));
writeTest(db, readTest);
});
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment