小编Bas*_*das的帖子

MethodInfo.Invoke性能问题

我正在读取文件和从文件写入数据.文件中的数据可以是浮点数,双精度数,整数等.直到运行时才知道该类型.我将把存储在文件中的数据类型称为Tin.数据被读入或写入Tout类型的数组.直到运行时才知道这种类型.

代码序列是这样的.在已知的Open方法Tin和Tout中,我们可以为已知数据类型创建读写方法.

Open(...)
{
   MethodInfo ReadMethod = typeof(...)GetMethod("ReadGeneric").MakeGenericMethod(new Type[] {typeof(Tin), typeof(Tout)}));
}
Run Code Online (Sandbox Code Playgroud)

读写循环重复数百万次,依赖于反射来调用适当的方法,如下所示.

Read loop
{
   var values = (Tout[])ReadMethod.Invoke(this,new object[]{index});
   process ...
}
Run Code Online (Sandbox Code Playgroud)

当使用性能分析器检查此代码时,如果只花时间调用运行时读写方法,我会发现c collosal amount.

我该如何加快速度呢?

.net c# invoke

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

invoke ×1