У меня работает намного дольше чем наивный алгоритм. И памяти много ест. Не могу понять в чем ошибка. Вот код https://pastebin.com/RFSVf6y1
А это не нативный?
Чет там жесть с аллокациями
Нет. У наивного кубическая сложность, а у этого должна быть меньше
Объясни, что значит нативный?
Не забудем, что сложность на бумаге, а вычисления на реальной железке, и алгоритм может быть неоптимален не только с математической точки зрения
Ну для начала надо не массив массивов использовать а двумерный массив.
У тебя Штрассен делает ОГРОМНОЕ количество дополнительных аллокаций. Это все равно что ездить с поднятым ручником.
Я уменьшил количество аллокаций. Не особо он изменилось скорость. Для примера наивный для матриц 256 на 256 делает умножение за 56 мс. А у меня Штрассен за 14000 мс и при это забирает больше 1 гб озу. Мне кажется это слишком большая разница так что нужно копать дальше.
А размеры у матриц какие?
Я проверял на 256 x 256
попробуй побольше взять если комп выдержит
У меня при 512 закрывается с ошибкой bad_alloc. И используется больше 2 гб озу. Так не должно быть. В наивном не больше 100 мбайт
О_о откуда в 2гб то, 512*512*sizeof(int) явно не даст 2 млрд
Вот и я не пойму
https://prnt.sc/whlnal
глянь в профайлере откуда 2гб, там в студии встроенный
Я посмотрел там больше всего инициализаций матрицы
Обсуждают сегодня