|
|
@@ -1,378 +0,0 @@
|
|
|
-console.log('\nObserver\n')
|
|
|
-
|
|
|
-var done = null
|
|
|
-var Observer = require('../src/observe/observer')
|
|
|
-var Emitter = require('../src/emitter')
|
|
|
-var OldObserver = require('../../vue/src/observer')
|
|
|
-var sideEffect = true
|
|
|
-var runs = 1000
|
|
|
-function cb () {
|
|
|
- sideEffect = !sideEffect
|
|
|
-}
|
|
|
-
|
|
|
-function now () {
|
|
|
- return window.performence
|
|
|
- ? window.performence.now()
|
|
|
- : Date.now()
|
|
|
-}
|
|
|
-
|
|
|
-var queue = []
|
|
|
-
|
|
|
-function bench (desc, fac, run) {
|
|
|
- queue.push(function () {
|
|
|
- var objs = []
|
|
|
- for (var i = 0; i < runs; i++) {
|
|
|
- objs.push(fac(i))
|
|
|
- }
|
|
|
- var s = now()
|
|
|
- for (var i = 0; i < runs; i++) {
|
|
|
- run(objs[i])
|
|
|
- }
|
|
|
- var passed = now() - s
|
|
|
- console.log(desc + ' - ' + (16 / (passed / runs)).toFixed(2) + ' ops/frame')
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
-function run () {
|
|
|
- queue.shift()()
|
|
|
- if (queue.length) {
|
|
|
- setTimeout(run, 0)
|
|
|
- } else {
|
|
|
- done && done()
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (simple object) ',
|
|
|
- function (i) {
|
|
|
- return {a:i}
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- new Observer().observe('', o)
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (simple object) old ',
|
|
|
- function (i) {
|
|
|
- return {a:i}
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- OldObserver.observe(o, '', new Emitter())
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (3 nested objects) ',
|
|
|
- function (i) {
|
|
|
- return {a:{b:{c:i}}}
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- new Observer().observe('', o)
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (3 nested objects) old ',
|
|
|
- function (i) {
|
|
|
- return {a:{b:{c:i}}}
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- OldObserver.observe(o, '', new Emitter())
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (array, 3 objects) ',
|
|
|
- function (i) {
|
|
|
- return [{a:i}, {a:i+1}, {a:i+2}]
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- new Observer().observe('', o)
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (array, 3 objects) old ',
|
|
|
- function (i) {
|
|
|
- return [{a:i}, {a:i+1}, {a:i+2}]
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- OldObserver.observe(o, '', new Emitter())
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (array, 30 objects) ',
|
|
|
- function () {
|
|
|
- var a = [], i = 30
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- new Observer().observe('', o)
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'observe (array, 30 objects) old',
|
|
|
- function () {
|
|
|
- var a = [], i = 30
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- OldObserver.observe(o, '', new Emitter())
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-Observer.emitGet = true
|
|
|
-OldObserver.shouldGet = true
|
|
|
-
|
|
|
-bench(
|
|
|
- 'simple get ',
|
|
|
- function () {
|
|
|
- var a = {a:1}
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('get', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- var v = o.a
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'simple get old',
|
|
|
- function () {
|
|
|
- var a = {a:1}
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('get', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- var v = o.a
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'nested get ',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('get', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- var v = o.a.b.c
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'nested get old',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('get', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- var v = o.a.b.c
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-Observer.emitGet = false
|
|
|
-OldObserver.shouldGet = false
|
|
|
-
|
|
|
-bench(
|
|
|
- 'simple set ',
|
|
|
- function () {
|
|
|
- var a = {a:1}
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a = 12345
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'simple set old',
|
|
|
- function () {
|
|
|
- var a = {a:1}
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a = 12345
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'nested set ',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a.b.c = 2
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'nested set old',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a.b.c = 2
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'swap set ',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a = {b:{c:2}}
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'swap set old ',
|
|
|
- function () {
|
|
|
- var a = {a:{b:{c:1}}}
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('set', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.a = {b:{c:2}}
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array push ',
|
|
|
- function () {
|
|
|
- var a = []
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.push({a:1})
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array push old',
|
|
|
- function () {
|
|
|
- var a = []
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.push({a:1})
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array reverse (5 objects) ',
|
|
|
- function () {
|
|
|
- var a = [], i = 5
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.reverse()
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array reverse (5 objects) old ',
|
|
|
- function () {
|
|
|
- var a = [], i = 5
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.reverse()
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array reverse (50 objects) ',
|
|
|
- function () {
|
|
|
- var a = [], i = 50
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- var ob = new Observer()
|
|
|
- ob.observe('', a)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.reverse()
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-bench(
|
|
|
- 'array reverse (50 objects) old',
|
|
|
- function () {
|
|
|
- var a = [], i = 50
|
|
|
- while (i--) {
|
|
|
- a.push({a:i})
|
|
|
- }
|
|
|
- var ob = new Emitter()
|
|
|
- OldObserver.observe(a, '', ob)
|
|
|
- ob.on('mutation', cb)
|
|
|
- return a
|
|
|
- },
|
|
|
- function (o) {
|
|
|
- o.reverse()
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-exports.run = function (cb) {
|
|
|
- done = cb
|
|
|
- run()
|
|
|
-}
|