Let's face it, startup time to compile the entire schema is long (relatively).
And it's rare that the entire schema is used immediately. So validate it, and then wait until entity converters are used to initialize the property converters, etc. That way, all the expression compilation is happening in the background using the TPL, instead of occurring inline.
[x] Cache all type/property setters and getters
[x] Defer expression compilation to background Task
[x] Use basic reflection until fast expression-based accessor is compiled
[x] Use cached accessors for translators
[x] Use cached accessors for creators
This should significantly reduce the startup time of using the schema.
Let's face it, startup time to compile the entire schema is long (relatively).
And it's rare that the entire schema is used immediately. So validate it, and then wait until entity converters are used to initialize the property converters, etc. That way, all the expression compilation is happening in the background using the TPL, instead of occurring inline.
Task
This should significantly reduce the startup time of using the schema.