UNPKG

backbone.listenablemodel

Version:

Composite model for Backbone.js

90 lines (62 loc) 2.42 kB
Backbone = require 'backbone' Backbone.ListenableModel = require '../lib/Backbone.ListenableModel' Benchtable = require 'benchtable' nestedInput = {} for i in [0...20] nestedInput[i] = new Backbone.Model runSuite = (suite) -> suite.on 'cycle', (event) -> console.log String(event.target) suite.on 'complete', (event) -> console.log 'Fastest is ' + this.filter('fastest').pluck('name') console.log this.table.toString() suite.run() do -> suite = new Benchtable suite.addFunction 'ListenableModel', (attr) -> new Backbone.ListenableModel attr suite.addFunction 'Model', (attr) -> new Backbone.Model attr suite.addInput 'Empty attr', {} suite.addInput 'Simple attr', {'hello': 'world', 1: 3.14} suite.addInput 'Complicated attr', nestedInput runSuite suite do -> suite = new Benchtable listenable = new Backbone.ListenableModel vanilla = new Backbone.Model suite.addFunction 'ListenableModel#set', (attr) -> listenable.set attr suite.addFunction 'Model#set', (attr) -> vanilla.set attr suite.addInput 'Empty attr', {} suite.addInput 'Simple attr', {'hello': 'world', 1: 3.14} suite.addInput 'Complicated attr', nestedInput runSuite suite do -> suite = new Benchtable listenable = new Backbone.ListenableModel nestedInput inner = listenable.get 0 vanilla = new Backbone.Model nestedInput suite.addFunction 'ListenableModel#trigger', (evt) -> listenable.trigger evt, {} suite.addFunction 'ListenableModel#trigger on inner', (evt) -> inner.trigger evt, {} suite.addFunction 'Model#trigger', (evt) -> vanilla.trigger evt, {} suite.addInput 'trigger change', ['change'] suite.addInput 'trigger change:someAttribute', ['change:attr'] runSuite suite do -> suite = new Benchtable listenable = new Backbone.ListenableModel nestedInput smallListenable = new Backbone.ListenableModel {1:3.14, 'hello': 'world', 'more': false} vanilla = new Backbone.Model nestedInput smallVanilla = new Backbone.ListenableModel {1:3.14, 'hello': 'world', 'more': false} suite.addFunction 'ListenableModel#clear', (model) -> model.clear() suite.addInput 'Large ListenableModel', [listenable] suite.addInput 'Small ListenableModel', [smallListenable] suite.addInput 'Large Backbone.Model', [vanilla] suite.addInput 'Small Backbone.Model', [smallVanilla] runSuite suite