perf: force GC on profiles
This commit is contained in:
parent
abf03401df
commit
f6ebaf74d3
|
@ -8,7 +8,7 @@ import {TemplateLoader} from 'core/compiler/template_loader';
|
||||||
import {LifeCycle} from 'core/life_cycle/life_cycle';
|
import {LifeCycle} from 'core/life_cycle/life_cycle';
|
||||||
|
|
||||||
import {reflector} from 'reflection/reflection';
|
import {reflector} from 'reflection/reflection';
|
||||||
import {DOM, document, window, Element} from 'facade/dom';
|
import {DOM, document, window, Element, gc} from 'facade/dom';
|
||||||
import {isPresent} from 'facade/lang';
|
import {isPresent} from 'facade/lang';
|
||||||
|
|
||||||
var MAX_DEPTH = 9;
|
var MAX_DEPTH = 9;
|
||||||
|
@ -137,18 +137,29 @@ export function main() {
|
||||||
|
|
||||||
function profile(create, destroy, name) {
|
function profile(create, destroy, name) {
|
||||||
return function(_) {
|
return function(_) {
|
||||||
window.console.profile(name);
|
window.console.profile(name + ' w GC');
|
||||||
var duration = 0;
|
var duration = 0;
|
||||||
var downCount = 200;
|
|
||||||
var count = 0;
|
var count = 0;
|
||||||
while(downCount--) {
|
while(count++ < 150) {
|
||||||
|
gc();
|
||||||
var start = window.performance.now();
|
var start = window.performance.now();
|
||||||
create(_);
|
create(_);
|
||||||
duration += window.performance.now() - start;
|
duration += window.performance.now() - start;
|
||||||
destroy(_);
|
destroy(_);
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
window.console.profileEnd(name);
|
window.console.profileEnd(name + ' w GC');
|
||||||
|
window.console.log(`Iterations: ${count}; time: ${duration / count} ms / iteration`);
|
||||||
|
|
||||||
|
window.console.profile(name + ' w/o GC');
|
||||||
|
duration = 0;
|
||||||
|
count = 0;
|
||||||
|
while(count++ < 150) {
|
||||||
|
var start = window.performance.now();
|
||||||
|
create(_);
|
||||||
|
duration += window.performance.now() - start;
|
||||||
|
destroy(_);
|
||||||
|
}
|
||||||
|
window.console.profileEnd(name + ' w/o GC');
|
||||||
window.console.log(`Iterations: ${count}; time: ${duration / count} ms / iteration`);
|
window.console.log(`Iterations: ${count}; time: ${duration / count} ms / iteration`);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -227,6 +238,7 @@ var BASELINE_IF_TEMPLATE = DOM.createTemplate(
|
||||||
// http://jsperf.com/nextsibling-vs-childnodes
|
// http://jsperf.com/nextsibling-vs-childnodes
|
||||||
|
|
||||||
class BaseLineTreeComponent {
|
class BaseLineTreeComponent {
|
||||||
|
element:Element;
|
||||||
value:BaseLineInterpolation;
|
value:BaseLineInterpolation;
|
||||||
left:BaseLineIf;
|
left:BaseLineIf;
|
||||||
right:BaseLineIf;
|
right:BaseLineIf;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
library angular.core.facade.dom;
|
library angular.core.facade.dom;
|
||||||
|
|
||||||
import 'dart:html';
|
import 'dart:html';
|
||||||
import 'dart:js' show JsObject;
|
import 'dart:js' show JsObject, context;
|
||||||
|
|
||||||
export 'dart:html' show DocumentFragment, Node, Element, TemplateElement, Text, document, location, window;
|
export 'dart:html' show DocumentFragment, Node, Element, TemplateElement, Text, document, location, window;
|
||||||
|
|
||||||
|
@ -11,6 +11,15 @@ class IdentitySanitizer implements NodeTreeSanitizer {
|
||||||
void sanitizeTree(Node node) {}
|
void sanitizeTree(Node node) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _window = context['window'];
|
||||||
|
var _gc = context['gc'];
|
||||||
|
|
||||||
|
gc() {
|
||||||
|
if (_gc != null) {
|
||||||
|
_gc.apply(const []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final identitySanitizer = new IdentitySanitizer();
|
final identitySanitizer = new IdentitySanitizer();
|
||||||
|
|
||||||
class DOM {
|
class DOM {
|
||||||
|
|
|
@ -7,6 +7,7 @@ export var Element = window.HTMLElement;
|
||||||
export var TemplateElement = window.HTMLTemplateElement;
|
export var TemplateElement = window.HTMLTemplateElement;
|
||||||
export var document = window.document;
|
export var document = window.document;
|
||||||
export var location = window.location;
|
export var location = window.location;
|
||||||
|
export var gc = window.gc ? () => window.gc() : () => null;
|
||||||
|
|
||||||
import {List, MapWrapper, ListWrapper} from 'facade/collection';
|
import {List, MapWrapper, ListWrapper} from 'facade/collection';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue