bench-insert-select-prepared.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. var common = require('../test/common');
  2. var connection = common.createConnection();
  3. var assert = require('assert');
  4. var table = 'insert_test';
  5. //var text = "本日は晴天なり";
  6. var text = "test abc xyz";
  7. connection.query([
  8. 'CREATE TEMPORARY TABLE `' + table + '` (',
  9. '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
  10. '`title` varchar(255),',
  11. 'PRIMARY KEY (`id`)',
  12. ') ENGINE=InnoDB DEFAULT CHARSET=utf8'
  13. ].join('\n'));
  14. function benchmarkInsert(numLeft, callback) {
  15. connection.execute('INSERT INTO ' + table + ' SET title="' + text + '"', [], function(err, result) {
  16. if (err) throw err;
  17. if (numLeft > 1)
  18. benchmarkInsert(numLeft-1, callback);
  19. else
  20. callback();
  21. });
  22. }
  23. function benchmarkInserts(n, cb) {
  24. var numInsert = 10000;
  25. var start = process.hrtime();
  26. benchmarkInsert(numInsert, function() {
  27. var end = process.hrtime();
  28. var diff = common.hrdiff(start, end);
  29. console.log(numInsert*1e9/diff + ' inserts/sec');
  30. if (n > 1)
  31. benchmarkInserts(n - 1, cb);
  32. else
  33. cb();
  34. });
  35. }
  36. function benchmarkSelect(numLeft, numSelect, callback) {
  37. connection.execute('select * from ' + table + ' limit ' + numSelect, [], function(err, result) {
  38. if (err) throw err;
  39. if (numLeft > 1)
  40. benchmarkSelect(numLeft-1, numSelect, callback);
  41. else
  42. callback();
  43. });
  44. }
  45. function benchmarkSelects(n, size, cb) {
  46. var numSelects = 100;
  47. var start = process.hrtime();
  48. benchmarkSelect(numSelects, size, function() {
  49. var end = process.hrtime();
  50. var diff = common.hrdiff(start, end);
  51. console.log(size + ' rows: ' + numSelects*1e9/diff + ' results/sec, ' + size*numSelects*1e9/diff + ' rows/sec');
  52. if (n > 1)
  53. benchmarkSelects(n - 1, size, cb);
  54. else
  55. cb();
  56. });
  57. }
  58. module.exports = function(done) {
  59. var testStart = process.hrtime();
  60. benchmarkInserts(1, function() {
  61. benchmarkSelects(5, 100, function() {
  62. benchmarkSelects(10, 1000, function() {
  63. benchmarkSelects(2, 50000, function() {
  64. var testEnd = process.hrtime();
  65. console.log('total time: ', common.hrdiff(testStart, testEnd)/1e9 );
  66. connection.end();
  67. if (done)
  68. done();
  69. });
  70. });
  71. });
  72. });
  73. };
  74. if (require.main === module) {
  75. module.exports();
  76. }