I\'m generating an expression tree that maps properties from a source object to a destination object, that is then compiled to a Func
It sounds like you're running into invocation overhead. Regardless of the source, though, if your method runs faster when loaded from a compiled assembly, simply compile it into an assembly and load it! See my answer at Why is Func<> created from Expression