sql.js vs alasql.js

JavaScript performance comparison

Revision 3 of this test case created by agershun

Preparation code

<script src="http://kripken.github.io/sql.js/js/sql.js"></script>
<script src="https://cdn.rawgit.com/agershun/alasql/master/lib/sql-parser/sql-parser.js"></script>
<script src="https://cdn.rawgit.com/agershun/alasql/master/src/alasql.js"></script>
<script>
var NUM_TESTS = 1000;

// Generate SQL statements
var sqls = [
  'DROP TABLE IF EXISTS test1',
  'DROP TABLE IF EXISTS test2',
  'CREATE TABLE test1 (one INT, two INT)',
  'CREATE TABLE test2 (two INT, three INT)'
];

for (var i = 0; i < NUM_TESTS; i++) {
  sqls.push('INSERT INTO test1 VALUES (' + i % 10 + ',' + ((i * i) % 10) + ')');
  sqls.push('INSERT INTO test2 VALUES (' + i % 10 + ',' + ((i * i) % 10) + ')');
}

// Prepare SQL.JS database
var sdb = new SQL.Database();
sqls.forEach(function(sql) {
  sdb.exec(sql);
});

// Prepare ALASQL.JS database
var adb = new alasql.Database();
sqls.forEach(function(sql) {
  adb.exec(sql);
});

// Complex query
var query = 'SELECT SUM(test1.one) AS sumone, test1.two, test2.three FROM test1 JOIN test2 ON test1.two = test2.two WHERE test1.one > 5 GROUP BY test1.two, test2.three ORDER BY three, sumone';
</script>


    

Preparation code output

<script src="https://cdn.rawgit.com/agershun/alasql/master/lib/sql-parser/sql-parser.js"></script> <script src="https://cdn.rawgit.com/agershun/alasql/master/src/alasql.js"></script> <script> var NUM_TESTS = 1000; // Generate SQL statements var sqls = [ 'DROP TABLE IF EXISTS test1', 'DROP TABLE IF EXISTS test2', 'CREATE TABLE test1 (one INT, two INT)', 'CREATE TABLE test2 (two INT, three INT)' ]; for (var i = 0; i < NUM_TESTS; i++) { sqls.push('INSERT INTO test1 VALUES (' + i % 10 + ',' + ((i * i) % 10) + ')'); sqls.push('INSERT INTO test2 VALUES (' + i % 10 + ',' + ((i * i) % 10) + ')'); } // Prepare SQL.JS database var sdb = new SQL.Database(); sqls.forEach(function(sql) { sdb.exec(sql); }); // Prepare ALASQL.JS database var adb = new alasql.Database(); sqls.forEach(function(sql) { adb.exec(sql); }); // Complex query var query = 'SELECT SUM(test1.one) AS sumone, test1.two, test2.three FROM test1 JOIN test2 ON test1.two = test2.two WHERE test1.one > 5 GROUP BY test1.two, test2.three ORDER BY three, sumone'; </script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
sql.js
sdb.exec(query);
pending…
alasql.js
adb.exec(query);
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL.

0 Comments