Я пытаюсь решить проблему, аналогичную описанной здесь
Инициализация строго типизированных объектов в LINQ to Entities
только из полностью противоположная направление . В моем хранилище есть несколько функций, которые возвращают данные одинаковой формы. Проблема заключается в моем коде проекции:
select new pocoClass
{
// complex projection that is several pages long includes grabbing a graph of data
}
на данный момент он существует для каждого запроса в хранилище. Я пытался переместить его в инициализатор объекта, но это дает мне ужас Используя булевы матрицы, размер которых обычно составляет от пары дюжин до пары сотен, они обычно довольно разрежены (всего 2-4 ненулевых элемента в большинстве строк и столбцов), и в моей среде выполнения во многом преобладает их умножение.
Что структура данных лучше всего подходит для ускорения умножения в этих обстоятельствах?
В настоящее время я сохраняю каждую матрицу в последовательном наборе битов (массив из 64-битных длин) по строкам и умножаю их с помощью в основном стандартного алгоритма, просто ускорил для разреженность с быстрой операцией определения местоположения следующего установленного бита в слове и с векторизацией с помощью битовых масок.
Должен ли я действительно использовать какое-то разреженное представление?