Я читаю и записываю данные в файл и из него. Данные в файле могут быть float, double, int и т.д. Тип неизвестен до выполнения. Я буду ссылаться на тип данных, хранящийся в файле как Tin. Данные считываются или записываются из массивов типа Tout. Этот тип также неизвестен до времени выполнения.
Кодовая последовательность выглядит примерно так. В методе Open Tin и Tout известны, мы можем создавать методы чтения и записи для известных типов данных.
Open(...)
{
MethodInfo ReadMethod = typeof(...)GetMethod("ReadGeneric").MakeGenericMethod(new Type[] {typeof(Tin), typeof(Tout)}));
}
Циклы чтения чтения повторяются миллионы раз и полагаются на отражение, чтобы вызвать соответствующие методы, как показано ниже.
Read loop
{
var values = (Tout[])ReadMethod.Invoke(this,new object[]{index});
process ...
}
При анализе этого кода с использованием профилировщика производительности я нахожу, что c collosal amount, если потрачено время, просто вызывает методы чтения чтения во время выполнения.
Как ускорить это.