Right now the `ServerRendererFactory2` creates a new instance of the `DomElementSchemaRegistry` for each and every request, which is quite costly (for the Tour of Heroes SSR this takes around **30%** of the overall execution time). Since the schema is never modified, but only used in a read-only fashion, it should be possible to re-use a single instance instead. Naive performance testing with 100 concurrent connections and 1000 requests in total shows an approximate **33%** improvement in Req/Sec on the Tour of Heroes SSR example. PR Close #28150 PR Close #28151
This commit is contained in:
		
							parent
							
								
									bc02e31185
								
							
						
					
					
						commit
						ce3a746644
					
				| @ -12,11 +12,13 @@ import {DOCUMENT, EventManager, ɵNAMESPACE_URIS as NAMESPACE_URIS, ɵSharedStyl | ||||
| 
 | ||||
| const EMPTY_ARRAY: any[] = []; | ||||
| 
 | ||||
| const DEFAULT_SCHEMA = new DomElementSchemaRegistry(); | ||||
| 
 | ||||
| @Injectable() | ||||
| export class ServerRendererFactory2 implements RendererFactory2 { | ||||
|   private rendererByCompId = new Map<string, Renderer2>(); | ||||
|   private defaultRenderer: Renderer2; | ||||
|   private schema = new DomElementSchemaRegistry(); | ||||
|   private schema = DEFAULT_SCHEMA; | ||||
| 
 | ||||
|   constructor( | ||||
|       private eventManager: EventManager, private ngZone: NgZone, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user