123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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('drop table ' + table).on('error', function() {});
- connection.query([
- 'CREATE TABLE `' + table + '` (',
- '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
- '`title` varchar(255) NOT NULL,',
- 'PRIMARY KEY (`id`)',
- ') ENGINE=InnoDB DEFAULT CHARSET=utf8'
- ].join('\n'));
- function benchmarkInsert(numLeft, callback) {
- connection.query('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 = 50000;
- 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 benchmarkParallelSelects(n, size, cb) {
- var start = process.hrtime();
- var numRunning = 0;
- function commandDone() {
- console.log(numRunning);
- numRunning--;
- if (numRunning > 0)
- return;
- var end = process.hrtime();
- var diff = common.hrdiff(start, end);
- console.log(size + ' rows: ' + n*1e9/diff + ' results/sec, ' + size*n*1e9/diff + ' rows/sec');
- cb();
- }
- var connections = new Array(n);
- for (var i=0; i < n; ++i)
- {
- numRunning++;
- connections[i] = common.createConnection();
- var cmd = connections[i].execute('select * from ' + table + ' limit ' + size, []);
- cmd.on('end', commandDone);
- }
- }
- module.exports = function(done) {
- var testStart = process.hrtime();
- benchmarkInserts(1, function() {
- benchmarkParallelSelects(8, 50000, function() {
- var testEnd = process.hrtime();
- console.log('total time: ', common.hrdiff(testStart, testEnd)/1e9 );
- if (done)
- done();
- });
- });
- };
- if (require.main === module) {
- module.exports();
- }
|