powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Насчет производительности
25 сообщений из 83, страница 1 из 4
Насчет производительности
    #39212574
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков?
...
Рейтинг: 0 / 0
Насчет производительности
    #39212588
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве неквадратные матрицы способны перемножаться?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Насчет производительности
    #39212591
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28,

ты точно матрицы умножаешь? Или другую операцию над ними делаешь?
...
Рейтинг: 0 / 0
Насчет производительности
    #39212593
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА разве неквадратные матрицы способны перемножаться?..
да.
одна NxM, другая MxN
...
Рейтинг: 0 / 0
Насчет производительности
    #39212599
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

ну да матрицы просто они в виде табличек у меня
...
Рейтинг: 0 / 0
Насчет производительности
    #39212600
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж NxM на MxK
...
Рейтинг: 0 / 0
Насчет производительности
    #39212608
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по теме - вытянуть матрицы да перемножить самому всяко быстрее выйдет чем чисто через sql. Возможное исключение - какое-нибудь нативное расширение на сервере для таких задач, но в общем случае о таком лучше даже не думать.
...
Рейтинг: 0 / 0
Насчет производительности
    #39212611
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wst,

то есть в с++ это быстрей будет получаться?
...
Рейтинг: 0 / 0
Насчет производительности
    #39212621
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28wst,

то есть в с++ это быстрей будет получаться?
да.
...
Рейтинг: 0 / 0
Насчет производительности
    #39212651
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилда.
Сильно зависит от кривизны рук перемножающего. Если он их в БД 24 часа перемножает...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Насчет производительности
    #39212690
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИзопропилда.
Сильно зависит от кривизны рук перемножающего. Если он их в БД 24 часа перемножает...
теперь не уверен....
...
Рейтинг: 0 / 0
Насчет производительности
    #39212777
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-любому в БД такое делать точно нельзя. Даже не по соображениям производительности.
...
Рейтинг: 0 / 0
Насчет производительности
    #39212808
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПо-любому в БД такое делать точно нельзя.
почему?
...
Рейтинг: 0 / 0
Насчет производительности
    #39212826
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпочему?
Наверное, Зив считает, что СУБД плохо справляются с перемножением и сложением множеств...

[src=SQL]select a.x,b.y,sum(a.value*b.value) from a join b on a.y=b.x group by 1,2[/src]
Как-то так по-моему...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Насчет производительности
    #39212853
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ага вот так вот почти я и делал
...
Рейтинг: 0 / 0
Насчет производительности
    #39212930
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28ага вот так вот почти я и делал
так как Сибиряков написал должно работать секунду, а не сутки. Покажи свое "почти так", т.е. текст запроса.
...
Рейтинг: 0 / 0
Насчет производительности
    #39213052
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tтак как Сибиряков написал должно работать секунду, а не сутки.

а может он всё-таки каждую из 500к умножает на 500к
...
Рейтинг: 0 / 0
Насчет производительности
    #39213055
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, вот
самый лучший алгоритм на данный момент: O(n2.3727)
точно секунда?
...
Рейтинг: 0 / 0
Насчет производительности
    #39213091
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
потому что мир перевернется и наши потомки будут смеяться нам нами, а предки будут плакать в могилах и спрашивать : "за что же мы боролись?"
...
Рейтинг: 0 / 0
Насчет производительности
    #39213112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков?
Скорее всего ты - большой выдумщик и фантазер.

Написать код который быстро считает на С++ это означает что нужно предварительно
ПОДГОТОВИТЬ данные для процессинга. Тоесть расположить в памяти строки 1-й
матрицы и столбцы второй в таком порядке чтобы они считывались последовательно,
были компактны были friendly для кешей L1/L2.

А теперь самое интересное. Тебя интересует КАКОЕ время. Время умножения?
Или время ПОДГОТОВКИ + время умножения?

Не спеши с ответом. Подумай. Это бесконечной длины боян который я всегда
спрашиваю у любителей сортировать массивы целых чисел длиной 4Гб.
...
Рейтинг: 0 / 0
Насчет производительности
    #39213114
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

2x500000x5 float - это 20 мегабайт - слёзы.

преждевременная оптимизация, как обычно, не нужна
...
Рейтинг: 0 / 0
Насчет производительности
    #39213121
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, точно-точно не нужна?

А может быть 5xfloat расширить до 8x ?
...
Рейтинг: 0 / 0
Насчет производительности
    #39213125
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

точно не нужна.
достаточно хранить в памяти вторую матрицу транспонированной
...
Рейтинг: 0 / 0
Насчет производительности
    #39213129
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmayton,

точно не нужна.
достаточно хранить в памяти вторую матрицу транспонированной
Загадками говоришь.
...
Рейтинг: 0 / 0
Насчет производительности
    #39213141
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78кстати, вот
самый лучший алгоритм на данный момент: O(n2.3727)
точно секунда?

не путайте алгоритмы умножения квадратных матриц и прямоугольных.

Пусть у нас есть две прямоугольных матрицы xy и yz. Тогда, асимптотика поиска матрицы r=xy mpl yz составит O(xyz). Алгоритм будет примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//предварительная инициализации элементов  матрицы r нулями
for(int i=0;i<x;++i){
   for(int j=0;j<y;++j){
      for(int k=0;k<z;++k){
         r[i][j]+=a[i][k]*b[k][j];
}
}
}



может что-то с индексами напутал, Dimmf28 проверьте самостоятельно. У меня нет времени(код набирал тут)

Таким образом в вашем случае необходимо либо 0,125*10^13, либо 0,125*10^8 операций (поскольку операция умножения в пространстве матриц некоммутативна). Думаю что за 30 минут, в крайнем случае за 60 минут, максимальное из этих двух значений число операций должно быть выполнено на не самой мощной вычислительной машине
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Насчет производительности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]