I haven't found any information on MSDN regarding this problem.

If we create an `Expression<Func<T>>` and call `Compile()` on it does CLR cache compiled results, so any subsequent calls of `Compile()` on the same expression wouldn't have much impact because CLR would return previously compiled `Func<T>` from internal memory cache? 

AFAIK lambda expressions are immutable, so internal caching would actually make sense.