| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| |
| var NUM_DOCS = 2000; |
| var NUM_BATCHES = 20; |
| |
| var init = function() { |
| var db = new CouchDB("bench_mark_db", {"X-Couch-Full-Commit": "false"}); |
| db.deleteDb(); |
| db.createDb(); |
| return db; |
| }; |
| |
| var timeit = function(func) { |
| var startTime = (new Date()).getTime(); |
| func(); |
| return ((new Date()).getTime() - startTime) / 1000; |
| }; |
| |
| var report = function(name, rate) { |
| rate = Math.round(parseFloat(rate) * 100) / 100; |
| console.log("" + name + ": " + rate + " docs/second"); |
| }; |
| |
| var makeDocs = function(n) { |
| docs = []; |
| for (var i=0; i < n; i++) { |
| docs.push({"foo":"bar"}); |
| }; |
| return docs; |
| }; |
| |
| var couchTests = {}; |
| |
| couchTests.single_doc_insert = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_DOCS; i++) { |
| db.save({"foo": "bar"}); |
| } |
| }); |
| report("Single doc inserts", NUM_DOCS/len); |
| }; |
| |
| couchTests.batch_ok_doc_insert = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_DOCS; i++) { |
| db.save({"foo":"bar"}, {"batch":"ok"}); |
| } |
| }); |
| report("Single doc inserts with batch=ok", NUM_DOCS/len); |
| }; |
| |
| couchTests.bulk_doc_100 = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_BATCHES; i++) { |
| db.bulkSave(makeDocs(100)); |
| } |
| }); |
| report("Bulk docs - 100", (NUM_BATCHES*100)/len); |
| }; |
| |
| couchTests.bulk_doc_1000 = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_BATCHES; i++) { |
| db.bulkSave(makeDocs(1000)); |
| } |
| }); |
| report("Bulk docs - 1000", (NUM_BATCHES*1000)/len); |
| }; |
| |
| |
| couchTests.bulk_doc_5000 = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_BATCHES; i++) { |
| db.bulkSave(makeDocs(5000)); |
| } |
| }); |
| report("Bulk docs - 5000", (NUM_BATCHES*5000)/len); |
| }; |
| |
| couchTests.bulk_doc_10000 = function() { |
| var db = init(); |
| var len = timeit(function() { |
| for(var i = 0; i < NUM_BATCHES; i++) { |
| db.bulkSave(makeDocs(10000)); |
| } |
| }); |
| report("Bulk docs - 10000", (NUM_BATCHES*10000)/len); |
| }; |