Я читаю и записываю данные в файл и из него. Данные в файле могут быть числами с плавающей запятой, двойными значениями, целыми числами и т. д. Тип неизвестен до времени выполнения. Я буду называть тип данных, хранящийся в файле, 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 колоссальной суммой, если время тратится только на вызов методов чтения и записи во время выполнения.
Как мне ускорить это.