From 580a40a75f8553bd4581f3b15ba1958c09eb3543 Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Tue, 4 Aug 2015 14:34:43 -0700 Subject: [PATCH 1/3] speed up Meta instantiation 6ms -> noise turns out there is no 0 cost abstraction in JS yet... --- packages/ember-metal/lib/meta.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/ember-metal/lib/meta.js b/packages/ember-metal/lib/meta.js index 44e00bbd5df..1c7a395ebdb 100644 --- a/packages/ember-metal/lib/meta.js +++ b/packages/ember-metal/lib/meta.js @@ -44,12 +44,16 @@ let members = { }; let memberNames = Object.keys(members); -let memberProperties = memberNames.map(memberProperty); function Meta(obj, parentMeta) { - // preallocate a slot for each member - memberProperties.forEach(prop => this[prop] = undefined); - + this.cache = undefined; + this.watching = undefined; + this.mixins = undefined; + this.bindings = undefined; + this.values = undefined; + this.deps = undefined; + this.chainWatchers = undefined; + this.chains = undefined; // used only internally this.source = obj; From a64e21130631d3314d303545c8fa1435f582632f Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Tue, 4 Aug 2015 16:34:03 -0700 Subject: [PATCH 2/3] =?UTF-8?q?don=E2=80=99t=20event=20try=20the=20for=20l?= =?UTF-8?q?oop=20if=20there=20are=20no=20actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ember-metal/lib/events.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ember-metal/lib/events.js b/packages/ember-metal/lib/events.js index e8f20bf56f4..6f609b9bb39 100644 --- a/packages/ember-metal/lib/events.js +++ b/packages/ember-metal/lib/events.js @@ -206,7 +206,7 @@ export function sendEvent(obj, eventName, params, actions) { actions = meta && meta.matchingListeners(eventName); } - if (!actions) { return; } + if (!actions || actions.length === 0) { return; } for (var i = actions.length - 3; i >= 0; i -= 3) { // looping in reverse for once listeners var target = actions[i]; From b6b0739ff8fd3c7df9c7c6ca3a0565ef7b5486c2 Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Tue, 4 Aug 2015 16:46:57 -0700 Subject: [PATCH 3/3] remove get for an internal property that will never be a CP In one example this removes nearly 8% of gets --- packages/ember-views/lib/views/component.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ember-views/lib/views/component.js b/packages/ember-views/lib/views/component.js index 7cf2539b34a..5767947860f 100644 --- a/packages/ember-views/lib/views/component.js +++ b/packages/ember-views/lib/views/component.js @@ -171,7 +171,7 @@ var Component = View.extend(TargetActionSupport, ComponentTemplateDeprecation, { _template: computed('templateName', { get() { - if (get(this, '_deprecatedFlagForBlockProvided')) { + if (this._deprecatedFlagForBlockProvided) { return true; } var templateName = get(this, 'templateName');