Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
7842d65
feat($compile/ngBind): don't add binding info if not enabled
petebacondarwin Jul 31, 2014
fee38c0
docs(protractorTests): inject a mock module to enable bindingInfo dur…
petebacondarwin Jul 31, 2014
6b5eef8
perf(jqLite): don't recreate the Node.contains polyfill
IgorMinar Aug 5, 2014
8290533
chore(jqLite): drop Node.contains polyfill
IgorMinar Aug 5, 2014
996d160
refactor(jqLite): don't recreate mouse event map
IgorMinar Aug 5, 2014
a7e5d25
refactor(jqLite): remove code duplication
IgorMinar Aug 5, 2014
d0130c4
perf(jqLite): don't use forEach in #off
IgorMinar Aug 5, 2014
694dcb8
perf(jqLite): improve createEventHandler method by switching from for…
IgorMinar Aug 5, 2014
7c5a1b0
perf($compile): optimize publicLinkFn
IgorMinar Aug 5, 2014
447c4da
perf(jqLite): optimize event listener registration
IgorMinar Aug 5, 2014
67ec72f
chore(jqLite): remove legacy code to support IE8 and older
IgorMinar Aug 5, 2014
ffb6f9a
perf(jqLite): don't register DOM listener for $destroy event
IgorMinar Aug 5, 2014
ea0aba7
perf(jqLite): optimize append() and after()
IgorMinar Aug 5, 2014
9435735
perf($compile): optimize nodeLinkFn
IgorMinar Aug 5, 2014
05bdd1d
WIP: add bp
IgorMinar Aug 6, 2014
5ad6f66
perf(jqLite): optimize jqLiteAcceptsData method
IgorMinar Aug 8, 2014
a1b4c21
chore(ngRepeat): name anonymous transclude callback for better debugging
IgorMinar Aug 8, 2014
3ca34bc
refactor(ngBindHtml): improve readability of the code
IgorMinar Aug 8, 2014
0affbf9
style(ngBind): name anonymous link fn to ease debugging/profiling
IgorMinar Aug 8, 2014
95ef76a
chore: rename getBlockElements to more correct getBlockNodes
IgorMinar Aug 8, 2014
68dce9f
refactor: simplify trim fn now that IE9 has String#trim
IgorMinar Aug 8, 2014
f53f546
perf(jqLite): don't check isString many times in constructor
IgorMinar Aug 8, 2014
b5ba807
style(jqLite): remove MiskoCode(tm)
IgorMinar Aug 8, 2014
125b43f
refactor(jqLite): don't look up the entry needlessly
IgorMinar Aug 8, 2014
d6b6423
perf(jqLite): don't use String#split in on() unless we need it
IgorMinar Aug 8, 2014
47045ea
perf(jqLite): microoptimization in chaining fn
IgorMinar Aug 8, 2014
6f4d7a5
refactor(shallowCopy): microoptimization
IgorMinar Aug 8, 2014
3f06762
perf: speed up shallowCopy and special case Attributes cloning
IgorMinar Aug 8, 2014
c8e601f
chore: remove unused variables
IgorMinar Aug 8, 2014
ef586e6
perf($compile): delay object initialization in nodeLinkFn
IgorMinar Aug 8, 2014
2ccd66f
style(ngRepeat): fix indentation
IgorMinar Aug 8, 2014
e484083
fix($parse): remove unused variable declaration in generated getters
IgorMinar Aug 8, 2014
6c511ce
style($parse): rename variables in generated code so that code is mor…
IgorMinar Aug 8, 2014
0035353
perf($parse): trim expression only if string
IgorMinar Aug 8, 2014
0836981
refactor($parse): simplify addInterceptor fn
IgorMinar Aug 8, 2014
7545693
chore(Scope): rename $$childScopeClass to ChildClass to simplify debu…
IgorMinar Aug 8, 2014
76e6bae
refactor(Scope): remove useless compileToFn helper fn
IgorMinar Aug 8, 2014
e062a16
refactor(jqLite): clean up jqLiteRemoveData fn
IgorMinar Aug 8, 2014
95efb7f
style(jqLite): rename onFn to jqLiteOn
IgorMinar Aug 10, 2014
1d8a4b3
perf(jqLite): refactor jqLiteExpandoStore to minimize access to expen…
IgorMinar Aug 10, 2014
66dd125
perf($compile): clone the nodeList during linking only if necessary
IgorMinar Aug 10, 2014
dccd43b
perf(jqLite): optimize off()
IgorMinar Aug 10, 2014
07b9a2e
perf(ngRepeat): clone boundary comment nodes
IgorMinar Aug 10, 2014
cf916c0
perf(ngRepeat): move updateScope fn to factory and reuse it for all r…
IgorMinar Aug 10, 2014
dc85f8c
perf(ngRepeat): move work to compile fn
IgorMinar Aug 10, 2014
3f13059
style(ngRepeat): ws and indentation fixes
IgorMinar Aug 10, 2014
a435415
perf(ngRepeat): use no-proto objects for blockMaps
IgorMinar Aug 10, 2014
7041d5b
perf(ngRepeat): optimize marking of nodes that are being removed via …
IgorMinar Aug 10, 2014
e43541f
perf(Scope): exit $broadcast early if nobody is listening for the giv…
IgorMinar Aug 10, 2014
0c3b65a
perf($parse): use no-proto maps as caches and avoid hasOwnProperty ch…
IgorMinar Aug 10, 2014
1da750c
WIP: TODO notes
IgorMinar Aug 11, 2014
4adb902
WIP: remove isObject todo
IgorMinar Aug 11, 2014
4eb0521
perf(isObject): use strict comparison
IgorMinar Aug 11, 2014
d72bb6b
WIP: remove todo
IgorMinar Aug 12, 2014
6e58811
perf(ngBind): bypass jquery/jqlite when setting text
IgorMinar Aug 12, 2014
14d05e3
WIP: remove TODO
IgorMinar Aug 12, 2014
6840a53
perf(Scope): watchCollection optimization
IgorMinar Aug 12, 2014
55b24e4
WIP: remove todo
IgorMinar Aug 12, 2014
c570768
WIP: remove todo
IgorMinar Aug 12, 2014
a61bdf0
perf(Scope): don't use forEach in
IgorMinar Aug 12, 2014
85c3d54
WIP: remove todo
IgorMinar Aug 12, 2014
6621806
perf(Scope): optimize $watchCollection when used for watching objects
IgorMinar Aug 12, 2014
e1df488
WIP: remove todo
IgorMinar Aug 12, 2014
202f1d7
perf($compile): refactor publicLinkFn to simplify the code and use 'f…
IgorMinar Aug 12, 2014
b7c4e35
chore(angular.suffix): fix typo
IgorMinar Aug 12, 2014
13b6a3a
WIP: remove TODO
IgorMinar Aug 12, 2014
1fbc863
refactor($compile): simplify controllersBoundTransclude check
IgorMinar Aug 12, 2014
fdb61e8
WIP: remove todo
IgorMinar Aug 12, 2014
a96abf6
perf(jqLite): optimize event handler
IgorMinar Aug 12, 2014
b22bade
WIP: bp - add profile button
IgorMinar Aug 12, 2014
71d67ee
WIP: remove todo
IgorMinar Aug 12, 2014
8d1d720
perf($compile): don't register $destroy callbacks on element-transclu…
IgorMinar Aug 13, 2014
d7e750d
WIP: remove todo
IgorMinar Aug 13, 2014
d70e1f4
perf(jqLite): simplify jqLiteDealoc
IgorMinar Aug 13, 2014
d39b6ab
WIP: remove todo
IgorMinar Aug 13, 2014
b991b23
perf(ngRepeat): simplify code and remove duplicate array.length access
IgorMinar Aug 13, 2014
dd089c5
chore(ngRepeat): fix typo in a comment
IgorMinar Aug 13, 2014
fc47280
chore(ngRepeat): improve inline comments
IgorMinar Aug 13, 2014
4db25d9
WIP: remove todo
IgorMinar Aug 13, 2014
6275de6
refactor(ngRepeat): simplify previousNode boundary calculation
IgorMinar Aug 13, 2014
9f115bd
refactor($compile): automatically append end comment nodes to all ele…
IgorMinar Aug 13, 2014
a8696b6
refactor(jqLite): simplify jqLiteAddNodes when multiple nodes are bei…
IgorMinar Aug 13, 2014
768bcc5
WIP: remove todo
IgorMinar Aug 13, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/config/templates/protractorTests.template.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
describe("{$ doc.description $}", function() {
beforeEach(function() {

browser.addMockModule('enable-binding-info', function() {
angular.module('enable-binding-info', [])
.config(['$compileProvider', function($compileProvider) {
$compileProvider.enableBindingInfo();
}]);
});

browser.get("{$ doc.pathPrefix $}/{$ doc.examplePath $}");
});

Expand Down
177 changes: 177 additions & 0 deletions perf/apps/largetable-bp/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
var app = angular.module('largetableBenchmark', []);

app.filter('noop', function() {
return function(input) {
return input;
};
});

app.controller('DataController', function($scope, $rootScope) {
var totalRows = 1000;
var totalColumns = 20;

var data = $scope.data = [];
$scope.digestDuration = '?';
$scope.numberOfBindings = totalRows*totalColumns*2 + totalRows + 1;
$scope.numberOfWatches = '?';

function iGetter() { return this.i; }
function jGetter() { return this.j; }

for (var i=0; i<totalRows; i++) {
data[i] = [];
for (var j=0; j<totalColumns; j++) {
data[i][j] = {
i: i, j: j,
iFn: iGetter,
jFn: jGetter
};
}
}

var previousType;

benchmarkSteps.push({
name: 'destroy',
fn: function() {
$scope.$apply(function() {
previousType = $scope.benchmarkType;
$scope.benchmarkType = 'none';
});
}
});

benchmarkSteps.push({
name: 'create',
fn: function() {
$scope.$apply(function() {
$scope.benchmarkType = previousType;
});
}
});

benchmarkSteps.push({
name: '$apply',
fn: function() {
$rootScope.$apply();
}
});
});

var fn = function() { return 'x'};


app.directive('baselineBindingTable', function() {
return {
restrict: 'E',
link: function ($scope, $element) {
var i, j, row, cell, comment;
var template = document.createElement('span');
template.setAttribute('ng-repeat', 'foo in foos');
template.classList.add('ng-scope');
template.appendChild(document.createElement('span'));
template.appendChild(document.createTextNode(':'));
template.appendChild(document.createElement('span'));
template.appendChild(document.createTextNode('|'));

for (i = 0; i < 1000; i++) {
row = document.createElement('div');
$element[0].appendChild(row);
for (j = 0; j < 20; j++) {
cell = template.cloneNode(true);
row.appendChild(cell);
cell.childNodes[0].textContent = i;
cell.childNodes[2].textContent = j;
cell.ng3992 = 'xxx';
comment = document.createComment('ngRepeat end: bar in foo');
row.appendChild(comment);
}

comment = document.createComment('ngRepeat end: foo in foos');
$element[0].appendChild(comment);
}
}
};
});


app.directive('baselineInterpolationTable', function() {
return {
restrict: 'E',
link: function ($scope, $element) {
var i, j, row, cell, comment;
var template = document.createElement('span');
template.setAttribute('ng-repeat', 'foo in foos');
template.classList.add('ng-scope');

for (i = 0; i < 1000; i++) {
row = document.createElement('div');
$element[0].appendChild(row);
for (j = 0; j < 20; j++) {
cell = template.cloneNode(true);
row.appendChild(cell);
cell.textContent = '' + i + ':' + j + '|';
cell.ng3992 = 'xxx';
comment = document.createComment('ngRepeat end: bar in foo');
row.appendChild(comment);
}

comment = document.createComment('ngRepeat end: foo in foos');
$element[0].appendChild(comment);
}
}
};
});



/*

the fastest
240/44

app.directive('baselineTable', function() {
return function($scope, $element) {
var i, j, row, cell;

for (i = 0; i < 1000; i++) {
row = document.createElement('div');
for (j = 0; j < 20; j++) {
cell = document.createElement('span');
cell.textContent = '' + i + ':' + j;
row.appendChild(cell);
}
$element[0].appendChild(row);
}
};
});

*/

/*
with comments and expando
232/90

app.directive('baselineTable', function() {
return function($scope, $element) {
var i, j, row, cell, comment;

for (i = 0; i < 1000; i++) {
row = document.createElement('div');
$element[0].appendChild(row);
for (j = 0; j < 20; j++) {
cell = document.createElement('span');
row.appendChild(cell);
cell.textContent = '' + i + ':' + j;
cell.ng3992 = 'xxx';
comment = document.createComment('ngRepeat end: bar in foo');
row.appendChild(comment);
}

comment = document.createComment('ngRepeat end: foo in foos');
$element[0].appendChild(comment);
}
};
});

*/
7 changes: 7 additions & 0 deletions perf/apps/largetable-bp/bootstrap.min.css

Large diffs are not rendered by default.

Loading