我在自定义序列化程序中密集使用FieldInfo.GetValue()调用。这个功能真的很慢。
1)是否有便携式加速方式?我不需要FieldInfo.GetValue()实现任何检查,我只需要快速获得该值。
现在谈论一种不可移植的方式。我用Mono。我的探查器显示FieldInfo.GetValue()花费大部分时间在MonoField.CheckGeneric()中。并调用MonoField.GetValueInternal()非常快但私密!当然我可以使用反射来直接调用这个私有方法(因为我没有那个泛型检查)但是反射调用会杀死所有性能提升。
2)是否可以快速调用此私有方法(没有反射开销,没有修改Mono源以使其公开)?
答案 0 :(得分:1)
您可以发出il来获取get值。因此,在第一次调用任何类型之后,您将缓存IL,但是如果您有很多类型,则可能无效。