我重写了一个使用反射的方法,用新代码使用System.Linq.Expressions类和Expression.Compile()方法。
正如预期的那样,使用这种方式程序会比使用反射快得多。
我还将同一方法重写为普通的C#代码进行比较,结果表明,用C#编写的代码比使用Expression.Compile()编译的代码快4倍。在我的情况下,该方法被循环调用了成千上万次。
请注意,我从我的分析中删除了第一次调用,以确保我不测量编译时间。因此,我只需要一次编译表达式,然后调用它数千次。
为什么使用Expression.Compile()编译的代码比纯C#更慢呢?