Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
ВнизОптимизация операций над массивами Найти похожие ветки
← →
Festil (2010-10-07 19:39) [0]Массив 4x4, каждый элемент есть сумма/произведение значений функций F(x) ,G(x), H(x), где x=1,2,3...N (N порядка 50).
Кол-во необходимых вычислений матрицы от 2000 до 4000.
Как лучше задать матрицуmatr:array[1..4,1..4] of real
или же черезgetmem
Так же где быстрее будет работать при операции над большими матрицами - размером (4x70) and (70x1)?
← →
Rouse_ © (2010-10-07 20:03) [1]затраты на вычисление валидного оффсета в данном случае думаю будут нивелированны нагрузкой, выдаваемой функциями рассчета F(x) ,G(x), H(x)
проще будет через array, бо врятли думаю что ты сможешь кардинально оптимизировать доступ к нужным адресам самостоятельно рассчитывая оффсет в блоке памяти
← →
Festil (2010-10-07 20:06) [2]Ясно.
А перемножение матриц (4x70) X (70x1) тоже в array?
← →
Anatoly Podgoretsky © (2010-10-07 20:19) [3]> Festil (07.10.2010 20:06:02) [2]
Конечно.
← →
han_malign (2010-10-08 09:11) [4]
> тоже в array?
- а ты думаешь, что статический и динамический массивы лежат в разных типах физической памяти? У тебя на компьютере много DRAM разных типов?
> врятли ... рассчитывая оффсет в блоке памяти
- +1 - ключевое слово "рассчитывать", тогда как составная индексация заложена в x86 ( [reg+reg*(1|2|4|8)+abs_offset] ) и этот блок быстрее чем обычный ALU, поскольку узко-заточенный... (хотя все равно ушлые компиляторы некоторые простые вычисления оптимизируют через инструкцию загрузки адреса(например: EAX = EAX * 3 ==> LEA EAX, [EAX+EAX*2] ))
← →
Festil (2010-10-08 16:08) [5]Спасибо.
Нашел ошибку, из-за чего скорость уменьшалась в 7-9 раз.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c