XAF v19.2 optimizes startup time and memory consumption for the following designers and editors:
- Module Designer: startup time in most scenarios.
- Application Designer: startup time in apps with certain modules (most notably, apps that use the WorkflowModule).
- Model Editor: startup time in specific scenarios.
- Application & Module Designers: memory consumption.
Test Results on Large-Scale Customer Apps
-
Module Designer startup time for a customer app with 70 modules and 600 controllers:
v19.1: 78 sec (532 MB RAM)
v19.2: 12.5 sec (308 MB RAM) -
Application Designer startup time for a customer app with 70 modules and 600 controllers:
v19.1: 140 sec (417 MB RAM)
v19.2: 54 sec (337 MB RAM) -
Model Editor startup time for a customer app with 70 modules and 600 controllers:
v19.1: 14.5 sec
v19.2: 13 sec -
Module Designer startup time for a customer app with 20 modules and 800 controllers:
v19.1: 93 sec
v19.2: 18.5 sec -
Application Designer startup time for a customer app with 20 modules and 800 controllers:
v19.1: 75 sec
v19.2: 48 sec -
Model Editor startup time for a customer app with 20 modules and 800 controllers:
v19.1: 29.5 sec
v19.2: 25 sec
All performance measurements above were carried out on an Intel® Core™ i7-4790 CPU @ 3.60GHz, 4 Core(s), 8 Logical Processor(s).
Comments from early testers:
- "A rough comparison of our app. DX 17.2 , 1m49.32s, DX 19.2, 16.73s. So definitely faster now. It's a more usable time now & means I don't have to synchronise toilet breaks with model editing."
- "The performance now is crazy / insane!!! Amazing job guys!!! Most of the models now nearly open instantly!"
How to Disable These Optimizations
We provide a custom implementation for Visual Studio's ITypeDiscoveryService. An update to the GetTypes method in particular helped us resolve performance issues in large-scale apps.
This change may affect many aspects of application development, so you may want to revert to original implementation in case of any issues:
- Edit your .sln file in Notepad or your favorite text editor.
- Find the GlobalSection(ExtensibilityGlobals) = postSolution section. If it does not exist, add the following code before the EndGlobal element:
CodeGlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection
- Insert UseDefaultTypeDiscoveryService = true into the GlobalSection(ExtensibilityGlobals) = postSolution section.
See Also:
Default XAF configuration options and feature toggles
How to measure and improve the application's performance
Performance enhancements in XAF v19.1 for all supported platforms
Hi Dennis
Our development has caught up with 19.2 (we have moved from 17.2 to 19.2). First impressions of these improvement are very favorable.
Thanks for the good work Team DX.
Chris