2

我在自定义序列化程序中大量使用 FieldInfo.GetValue() 调用。这个功能真的很慢。

1)有没有一种便携的方式来加速它?我不需要 FieldInfo.GetValue() 实现所做的任何检查,我只需要快速获取该值。

现在介绍一种非便携式方式。我用单声道。我的分析器显示 FieldInfo.GetValue() 大部分时间都在 MonoField.CheckGeneric() 中。并且调用 MonoField.GetValueInternal() 非常快但私密!当然,我可以使用反射直接调用这个私有方法(因为我没有进行通用检查)但是通过反射调用会杀死所有性能提升。

2)是否可以快速调用这个私有方法(没有反射开销,也没有修改 Mono 源以使其公开)?

4

1 回答 1

1

您可以发出 il 来获取值。因此,在第一次调用任何类型之后,您会缓存 IL,但是如果您有很多类型,这可能不起作用。

于 2013-10-31T16:45:22.607 回答