perf(ivy): share instances of `DomElementSchemaRegistry` (#34332)
To create a binding parser, an instance of `ElementSchemaRegistry` is required. Prior to this change, each time a new binding parser was created a new instance of `DomElementSchemaRegistry` would be instantiated. This is an expensive operation that takes roughly 1ms per instantiation, so it is key that multiple allocations are avoided. By sharing a single `DomElementSchemaRegistry`, we avoid two such allocations, i.e. save ~2ms, per component template. PR Close #34332
This commit is contained in:
parent
3255d2b197
commit
6e5f076330
|
@ -2014,13 +2014,14 @@ export function parseTemplate(
|
||||||
return {nodes, styleUrls, styles};
|
return {nodes, styleUrls, styles};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const elementRegistry = new DomElementSchemaRegistry();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a `BindingParser` with a default configuration.
|
* Construct a `BindingParser` with a default configuration.
|
||||||
*/
|
*/
|
||||||
export function makeBindingParser(
|
export function makeBindingParser(
|
||||||
interpolationConfig: InterpolationConfig = DEFAULT_INTERPOLATION_CONFIG): BindingParser {
|
interpolationConfig: InterpolationConfig = DEFAULT_INTERPOLATION_CONFIG): BindingParser {
|
||||||
return new BindingParser(
|
return new BindingParser(new Parser(new Lexer()), interpolationConfig, elementRegistry, null, []);
|
||||||
new Parser(new Lexer()), interpolationConfig, new DomElementSchemaRegistry(), null, []);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resolveSanitizationFn(context: core.SecurityContext, isAttribute?: boolean) {
|
export function resolveSanitizationFn(context: core.SecurityContext, isAttribute?: boolean) {
|
||||||
|
|
Loading…
Reference in New Issue