Ответы пользователя по тегу C
  • C# Алгоритм Штрассена перемножения матриц. Медленно работает

    @pr0fedt Автор вопроса
    Вопрос решен. Сразу не логадался проверить работу алгоритма на матрицах с размером больше чем 1024х1024.
    В итоге на размера 4096х4096 он оказался быстрее. Оптимизировал код согласно советам, убрал класс-обертку Matrix, в итоге алгоритм стал быстрее традиционного уже на 1024х1024, хотя в литературе пишут, что алгоритм Штрассена предпочтительные использовать уже при размерах больших 128х128. Но быстрее, без использования кеширования боюсь на C# у меня не получится.
    За предложение скинуть dll'ку спасибо) Это учебный проект, но к сожалению никто из преподаватель мне с ним помочь не смог.
    Огромное спасибо за помощь)
    Ответ написан
  • C# Алгоритм Штрассена перемножения матриц. Медленно работает

    @pr0fedt Автор вопроса
    Работает медленнее где то в 3,5 — 4 раза. Константа у алгоритма достаточно велика, как и требования по памяти, но на размере матриц 1000х1000 он уже должен точно обгонять традиционный алгоритм перемножения.

    Есть подозрения, что в созданных объектах класса Matrix массив проталкивается не по ссылке. Если это так, то в таком случае придется удалить данный класс и работать напрямую с массивом, хотя в данном случае код будет выглядеть нечитабельно. Сейчас попробую это сделать…

    Загнал в профайлер, если у меня правильно получается интерпретировать его отчет, то 70% процессорного времени уходит на перемножение алгоритмом Винограда в случае, елси размер матрицы меньше 32
    Ответ написан