Если вас беспокоит производительность, вы можете вернуться к кодированию в контексте unsafe
.
Помечая тип, элемент типа или блок оператора с помощью ключевого слова unsafe, вы можете использовать указательвводит и выполняет операции с указателями в стиле C ++ над памятью в этой области, чтобы иметь возможность делать это в среде управляемого выполнения.Небезопасный код может работать быстрее, чем соответствующая безопасная реализация.
Вот хороший, короткий пример из книги C # 4.0 в двух словах:
unsafe void BlueFilter (int[,] bitmap)
{
int length = bitmap.Length;
fixed (int* b=bitmap)
{
int* p=b;
for (int i=0, i<length; i++)
*p++ &= 0xFF;
}
}
( Источник )
Кроме того, вам также следует взглянуть на этот вопрос SO
Почему умножение матриц в .NET так медленно?