BreezeJS Local Test DRG

Benchmark created by Steve on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.6/q.js"></script>
<script src="https://rawgit.com/Breeze/breeze.js/master/build/breeze.min.js"></script>

<script src="https://github.com/pouchdb/pouchdb/releases/download/3.0.6/pouchdb-3.0.6.min.js" type="application/javascript"></script>
<script src="https://rawgit.com/typicaljoe/taffydb/master/taffy-min.js" type="application/javascript"></script>

Setup

var firstNames = ['Steve', 'Geoff', 'Dan', 'Brendan', 'Pat', 'Drew', 'Carl', 'Mike', 'Zac', 'Kevin'];
    var lastNames = ['Keith', 'Sullivan', 'Goldberg', 'Terrio', 'Bailey', 'Kovamees', 'McShane', 'Brown', 'Green'];
    var personList = [];
    
    // Create data service
    var dataService = new breeze.DataService({
      serviceName: 'DataService',
      hasServerMetadata: false
    });
    
    // Create entity manager
    var manager = new breeze.EntityManager({
      dataService: dataService
    });
    
    // Create person entity type
    var personEntityType = new breeze.EntityType({
      shortName: "person",
      namespace: "myAppNamespace"
    });
    
    var idProp = new breeze.DataProperty({
      name: "Id",
      dataType: breeze.DataType.Integer,
      isPartOfKey: true
    });
    
    var firstNameProp = new breeze.DataProperty({
      name: "FirstName",
      dataType: breeze.DataType.String,
      isNullable: true,
      maxLength: 20
    });
    
    var lastNameProp = new breeze.DataProperty({
      name: "LastName",
      dataType: breeze.DataType.String,
      isNullable: true,
      maxLength: 20
    });
    personEntityType.addProperty(idProp);
    personEntityType.addProperty(firstNameProp);
    personEntityType.addProperty(lastNameProp);
    
    // Add person entity type to the metadatastore
    manager.metadataStore.addEntityType(personEntityType);
    manager.metadataStore.setEntityTypeForResourceName('person', personEntityType);
    
    // Create random records
    for (var i = 0; i < 100; i++) {
      var firstNameIndex = Math.floor(Math.random() * firstNames.length);
      var lastNameIndex = Math.floor(Math.random() * lastNames.length);
      var person = personEntityType.createEntity();
      person.Id = Math.floor(Math.random() * 100000000);
      person.FirstName = firstNames[firstNameIndex];
      person.LastName = lastNames[lastNameIndex];
      personList.push(person);
    }
    
    var taffydb1 = TAFFY(); // empty db
    var pouchdb1 = new PouchDB('testDB1'); // empty db

Teardown


    manager.clear();
  

Test runner

Ready to run.

Testing in
TestOps/sec
BreezeJS: Insert Records
// Add records to entity manager
for (var j = 0, len = personList.length; j < len; j++) {
  manager.addEntity(personList[j]);
}
ready
TaffyDB: Insert records
for (var j = 0, len = personList.length; j < len; j++) {
  taffydb1.insert({
    index: i,
    firstName: personList[j].FirstName,
    lastName: personList[j].LastName
  });
}
ready
PouchDB: Insert records
for (var j = 0, len = personList.length; j < len; j++) {
  pouchdb1.post({
    firstName: personList[j].FirstName,
    lastName: personList[j].LastName
  });
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Steve on