Каков наилучший способ хранения 2D-массива в С# для оптимизации производительности при выполнении множества арифметических элементов в массиве?
У нас есть большие (около 1,5 Гб) массивы, которые, например, мы хотим умножить друг на друга по элементу. Производительность имеет решающее значение. Контекст, в котором это делается, находится в С#. Есть ли какой-либо умный способ хранения массивов и итерации по ним? Можем ли мы написать эти части в неуправляемом С++, и это действительно увеличит производительность? Массивы должны быть доступны для остальной части программы С#.
В настоящее время (в c) массив хранится как один длинный вектор. Мы выполняем вычисления для каждого элемента массива и перезаписываем старое значение. Вычисления обычно уникальны для каждого элемента вектора.
Временные эксперименты показывают, что сохранение и повторение данных в виде массива в С# происходит медленнее, чем сохранение его как 2D-массива. Я хотел бы знать, есть ли еще лучший способ обработки данных. Конкретная выполняемая арифметика не имеет отношения к вопросу.