Работает медленнее где то в 3,5 — 4 раза. Константа у алгоритма достаточно велика, как и требования по памяти, но на размере матриц 1000х1000 он уже должен точно обгонять традиционный алгоритм перемножения.
Есть подозрения, что в созданных объектах класса Matrix массив проталкивается не по ссылке. Если это так, то в таком случае придется удалить данный класс и работать напрямую с массивом, хотя в данном случае код будет выглядеть нечитабельно. Сейчас попробую это сделать…
Загнал в профайлер, если у меня правильно получается интерпретировать его отчет, то 70% процессорного времени уходит на перемножение алгоритмом Винограда в случае, елси размер матрицы меньше 32