node-query/node_modules/mysql2/benchmarks/bench-insert-select-prepared.js

84 lines
2.2 KiB
JavaScript

var common = require('../test/common');
var connection = common.createConnection();
var assert = require('assert');
var table = 'insert_test';
//var text = "本日は晴天なり";
var text = "test abc xyz";
connection.query([
'CREATE TEMPORARY TABLE `' + table + '` (',
'`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
'`title` varchar(255),',
'PRIMARY KEY (`id`)',
') ENGINE=InnoDB DEFAULT CHARSET=utf8'
].join('\n'));
function benchmarkInsert(numLeft, callback) {
connection.execute('INSERT INTO ' + table + ' SET title="' + text + '"', [], function(err, result) {
if (err) throw err;
if (numLeft > 1)
benchmarkInsert(numLeft-1, callback);
else
callback();
});
}
function benchmarkInserts(n, cb) {
var numInsert = 10000;
var start = process.hrtime();
benchmarkInsert(numInsert, function() {
var end = process.hrtime();
var diff = common.hrdiff(start, end);
console.log(numInsert*1e9/diff + ' inserts/sec');
if (n > 1)
benchmarkInserts(n - 1, cb);
else
cb();
});
}
function benchmarkSelect(numLeft, numSelect, callback) {
connection.execute('select * from ' + table + ' limit ' + numSelect, [], function(err, result) {
if (err) throw err;
if (numLeft > 1)
benchmarkSelect(numLeft-1, numSelect, callback);
else
callback();
});
}
function benchmarkSelects(n, size, cb) {
var numSelects = 100;
var start = process.hrtime();
benchmarkSelect(numSelects, size, function() {
var end = process.hrtime();
var diff = common.hrdiff(start, end);
console.log(size + ' rows: ' + numSelects*1e9/diff + ' results/sec, ' + size*numSelects*1e9/diff + ' rows/sec');
if (n > 1)
benchmarkSelects(n - 1, size, cb);
else
cb();
});
}
module.exports = function(done) {
var testStart = process.hrtime();
benchmarkInserts(1, function() {
benchmarkSelects(5, 100, function() {
benchmarkSelects(10, 1000, function() {
benchmarkSelects(2, 50000, function() {
var testEnd = process.hrtime();
console.log('total time: ', common.hrdiff(testStart, testEnd)/1e9 );
connection.end();
if (done)
done();
});
});
});
});
};
if (require.main === module) {
module.exports();
}