Node.js
SQLite3
lambda

Node.jsでbetter-sqlite3とsqlite3のベンチマーク on AWS Lambda

More than 1 year has passed since last update.


はじめに

Node.jsでsqlite3を扱うのにいろいろなライブラリがありますが、

最近better-sqlite3という速度を売りにしたライブラリがあったのでベンチマークしてみました。

sqlite3

better-sqlite3

AWS Lambda上で実行したのでコンテナ起動の時間などももしかしたらかかっているかもしれません。

デプロイ後、AWSのウェブのコンソール上で実行し、出力されたDurationで計測しています。


検証環境

AWS Lambda メモリ128MB


  • Node.js 4.3.2

  • npm


    • aws-sdk 2.6.3

    • sqlite3 3.1.8

    • better-sqlite3 1.3.9




ベンチマーク結果

簡単なselect文でレコード数が16件だったためかほとんど差がありませんでした。

メモリの使用量はsqlite3が21MB、better-sqlite3が17MBでした。

回数
sqlite3(ms)
better-sqlite3(ms)

1
16.88
1.60

2
1.36
23.09

3
38.54
4.72

4
21.39
26.52

5
9.88
2.29

6
13.80
1.15

7
1.33
21.16

8
21.48
17.20

9
12.05
5.98

10
7.17
1.16

平均
14.388
10.487

80パーセンタイル
21.408
21.546

90パーセンタイル
23.186
23.433


sqlite3

'use strict';

var sqlite3 = require('sqlite3')
;

exports.exec = function (callback) {
var db = new sqlite3.Database('data/test.db', sqlite3.OPEN_READONLY)
;
db.each('select id, name from master', function (error, row) {
console.log(row.id);
console.log(row.name);
});
db.close(callback);
}


better-sqlite3

'use strict';

var Database = require('better-sqlite3')
;

exports.exec = function (callback) {
var db = new Database('data/test.db')
;
db.on('open', function () {
var statement = db.prepare('select id, name from master');
statement.each(function (row) {
console.log(row.id);
console.log(row.name);
});
db.close();
});
db.on('close', function () {
callback();
});
}