mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-05-30 10:06:21 +08:00
88 lines
2.1 KiB
JavaScript
Executable File
88 lines
2.1 KiB
JavaScript
Executable File
var app = angular.module('parsedExpressionBenchmark', []);
|
|
|
|
app.config(function($compileProvider) {
|
|
if ($compileProvider.debugInfoEnabled) {
|
|
$compileProvider.debugInfoEnabled(false);
|
|
}
|
|
});
|
|
|
|
app.filter('noop', function() {
|
|
return function(input) {
|
|
return input;
|
|
};
|
|
});
|
|
|
|
//Executes the specified expression as a watcher
|
|
app.directive('bmPeWatch', function() {
|
|
return {
|
|
restrict: 'A',
|
|
compile: function($element, $attrs) {
|
|
$element.text( $attrs.bmPeWatch );
|
|
return function($scope, $element, $attrs) {
|
|
$scope.$watch($attrs.bmPeWatch, function(val) {
|
|
$element.text(val);
|
|
|
|
});
|
|
};
|
|
}
|
|
};
|
|
});
|
|
|
|
//Executes the specified expression as a watcher
|
|
//Adds a simple wrapper method to allow use of $watch instead of $watchCollection
|
|
app.directive('bmPeWatchLiteral', function($parse) {
|
|
function retZero() {
|
|
return 0;
|
|
}
|
|
|
|
return {
|
|
restrict: 'A',
|
|
compile: function($element, $attrs) {
|
|
$element.text( $attrs.bmPeWatchLiteral );
|
|
return function($scope, $element, $attrs) {
|
|
$scope.$watch( $parse($attrs.bmPeWatchLiteral, retZero) );
|
|
};
|
|
}
|
|
};
|
|
});
|
|
|
|
app.controller('DataController', function($scope, $rootScope) {
|
|
var totalRows = 10000;
|
|
|
|
var data = $scope.data = [];
|
|
|
|
var star = '*';
|
|
|
|
$scope.func = function() { return star;};
|
|
|
|
for (var i=0; i<totalRows; i++) {
|
|
data.push({
|
|
index: i,
|
|
odd: i%2 === 0,
|
|
even: i%2 === 1,
|
|
str0: "foo-" + Math.random()*Date.now(),
|
|
str1: "bar-" + Math.random()*Date.now(),
|
|
str2: "baz-" + Math.random()*Date.now(),
|
|
num0: Math.random()*Date.now(),
|
|
num1: Math.random()*Date.now(),
|
|
num2: Math.random()*Date.now(),
|
|
date0: new Date(Math.random()*Date.now()),
|
|
date1: new Date(Math.random()*Date.now()),
|
|
date2: new Date(Math.random()*Date.now()),
|
|
func: function(){ return star; },
|
|
obj: data[i-1],
|
|
keys: data[i-1] && (data[i-1].keys || Object.keys(data[i-1])),
|
|
constructor: data[i-1]
|
|
});
|
|
}
|
|
|
|
benchmarkSteps.push({
|
|
name: '$apply',
|
|
fn: function() {
|
|
for (var i=0; i<50; i++) {
|
|
$rootScope.$digest();
|
|
}
|
|
}
|
|
});
|
|
});
|