Slide 1

Slide 1 text

YUI 3.10.0 Go Fast @ericf

Slide 2

Slide 2 text

0 50,000 100,000 150,000 200,000 153,532 51,871 ops/sec 3.8.1 3.10.0pr1 Y.BaseCore

Slide 3

Slide 3 text

0 12,500 25,000 37,500 50,000 48,067 13,696 ops/sec 3.8.1 3.10.0pr1 Y.Base

Slide 4

Slide 4 text

0 2,750,000 5,500,000 8,250,000 11,000,000 10,810,890 2,330,865 ops/sec 3.8.1 3.10.0pr1 Y.Base#get()

Slide 5

Slide 5 text

0 100,000 200,000 300,000 400,000 332,063 74,202 ops/sec 3.8.1 3.10.0pr1 Y.Base#set()

Slide 6

Slide 6 text

0 7,500 15,000 22,500 30,000 28,722 12,900 ops/sec 3.8.1 3.10.0pr1 Y.MyModel w/ 2 ATTRS

Slide 7

Slide 7 text

0 150,000 300,000 450,000 600,000 531,777 261,855 ops/sec 3.8.1 3.10.0pr1 Y.EventTarget#publish()

Slide 8

Slide 8 text

0 1,500,000 3,000,000 4,500,000 6,000,000 5,139,582 839,048 ops/sec 3.8.1 3.10.0pr1 Y.EventTarget#fire() – 0L

Slide 9

Slide 9 text

0 100,000 200,000 300,000 400,000 351,084 160,905 ops/sec 3.8.1 3.10.0pr1 Y.EventTarget#fire() – 2LP

Slide 10

Slide 10 text

3.10.0pr1 http://stage.yuilibrary.com/

Slide 11

Slide 11 text

3.10.0pr1 http://stage.yuilibrary.com/

Slide 12

Slide 12 text

Back-Compat Known “Issues”

Slide 13

Slide 13 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } });

Slide 14

Slide 14 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } });

Slide 15

Slide 15 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo();

Slide 16

Slide 16 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.ATTRS.baz = {value: 'baz'};

Slide 17

Slide 17 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.ATTRS.baz = {value: 'baz'}; var foo2 = new Y.Foo();

Slide 18

Slide 18 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.ATTRS.baz = {value: 'baz'}; var foo2 = new Y.Foo(); Y.log(foo2.get('baz')); // undefined

Slide 19

Slide 19 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.ATTRS.baz = {value: 'baz'}; var foo2 = new Y.Foo(); Y.log(foo2.get('baz')); // undefined

Slide 20

Slide 20 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.ATTRS.baz = {value: 'baz'}; var foo2 = new Y.Foo(); Y.log(foo2.get('baz')); // undefined

Slide 21

Slide 21 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.modifyAttrs({ baz: {value: 'baz'} }); var foo2 = new Y.Foo(); Y.log(foo2.get('baz')); // undefined

Slide 22

Slide 22 text

Touching ATTRS Y.Foo = Y.Base.create('foo', Y.Base, [], {}, { ATTRS: { bar: {value: 'bar'} } }); var foo1 = new Y.Foo(); Y.Foo.modifyAttrs({ baz: {value: 'baz'} }); var foo2 = new Y.Foo(); Y.log(foo2.get('baz')); // "baz"

Slide 23

Slide 23 text

Three-Pronged 1) Attribute 2) Base 3) Custom Event

Slide 24

Slide 24 text

2 More Things… Go Faster

Slide 25

Slide 25 text

2 More Things… 1) Short-Circuit Event. 2) Filter ATTRS Statically.

Slide 26

Slide 26 text

0 20,000 40,000 60,000 80,000 71,255 13,696 ops/sec 3.8.1 3.10.0pr1++ Y.Base

Slide 27

Slide 27 text

0 375,000 750,000 1,125,000 1,500,000 1,172,805 74,202 ops/sec 3.8.1 3.10.0pr1++ Y.Base#set()

Slide 28

Slide 28 text

Go Test 3.10.0pr1 Questions? @ericf