From 8f0dcbab804180828d6859b1340c86cf161209fb Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 23 Mar 2011 09:33:29 -0700 Subject: feat(scope): new and improved scope implementation - Speed improvements (about 4x on flush phase) - Memory improvements (uses no function closures) - Break $eval into $apply, $dispatch, $flush - Introduced $watch and $observe Breaks angular.equals() use === instead of == Breaks angular.scope() does not take parent as first argument Breaks scope.$watch() takes scope as first argument Breaks scope.$set(), scope.$get are removed Breaks scope.$config is removed Breaks $route.onChange callback has not "this" bounded --- perf/MiscPerf.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 perf/MiscPerf.js (limited to 'perf') diff --git a/perf/MiscPerf.js b/perf/MiscPerf.js new file mode 100644 index 00000000..c1d71cbd --- /dev/null +++ b/perf/MiscPerf.js @@ -0,0 +1,21 @@ +describe('perf misc', function(){ + it('operation speeds', function(){ + perf( + function typeByTypeof(){ return typeof noop == 'function'; }, // WINNER + function typeByProperty() { return noop.apply && noop.call; }, + function typeByConstructor() { return noop.constructor == Function; } + ); + }); + + it('property access', function(){ + var name = 'value'; + var none = 'x'; + var scope = {}; + perf( + function direct(){ return scope.value; }, // WINNER + function byName() { return scope[name]; }, + function undefinedDirect(){ return scope.x; }, + function undefiendByName() { return scope[none]; } + ); + }); +}); -- cgit v1.2.3