Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 10:36   #11
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

В Паскале во внутреннем цикле нужно перебирать самый правый индекс. Если внутренний цикл будет по левому индексу, программа будет работать медленнее.
s-andriano вне форума Ответить с цитированием
Старый 13.05.2012, 14:07   #12
Sёker
Пользователь
 
Регистрация: 30.09.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
В Паскале во внутреннем цикле нужно перебирать самый правый индекс. Если внутренний цикл будет по левому индексу, программа будет работать медленнее.
Было так:
SetLength(M,H,L);
for j:=0 to L-1 do
for i:=0 to H-1 do M[i,j]:=Value;

S:=0;
for j:=0 to L-1 do
for i:=0 to H-1 do S:=S+M[i,j];

Сделал так:
SetLength(M,L,H);
for j:=0 to L-1 do
for i:=0 to H-1 do M[j,i]:=Value;

S:=0;
for j:=0 to L-1 do
for i:=0 to H-1 do S:=S+M[j,i];

Да, действительно стало быстрее. Спасибо.
Но так всё равно получается быстрее:
SetLength(M,H*L);
for j:=0 to L-1 do
for i:=0 to H-1 do M[i+j*H]:=Value;

S:=0;
for j:=0 to L-1 do
for i:=0 to H-1 do S:=S+M[i+j*H];
Sёker вне форума Ответить с цитированием
Старый 13.05.2012, 15:23   #13
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну, не видя цифр, сложно что-то сказать.
Результат устойчив по отношению к очередности нажимания кнопок?
И я бы сначала вынес SetLength за пределы интервала измерения времени и, опять же, перед ним разок прошелся по массиву от начала до конца, чтобы гарантировать, что весь массив изначально находится в ОП, а часть его не лежит на диске (виртуальная память - хитрая штука!).
s-andriano вне форума Ответить с цитированием
Старый 13.05.2012, 15:42   #14
Sёker
Пользователь
 
Регистрация: 30.09.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Ну, не видя цифр, сложно что-то сказать.
Результат устойчив по отношению к очередности нажимания кнопок?
И я бы сначала вынес SetLength за пределы интервала измерения времени и, опять же, перед ним разок прошелся по массиву от начала до конца, чтобы гарантировать, что весь массив изначально находится в ОП, а часть его не лежит на диске (виртуальная память - хитрая штука!).
Да, результат неустойчив к очерёдности нажатия кнопок. После вынесения setlength за пределы снятия времени, разница времени стала ещё меньше. И не всегда в пользу одномерного массива.
Был не прав. Учу букварь
Sёker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зачем нужны классы Sylar9 Общие вопросы C/C++ 5 15.03.2012 11:38
Многомерные массивы! GoogleDOt PHP 6 15.09.2011 09:33
Зачем нужны блок-схемы? fs444 Общие вопросы по программированию, компьютерный форум 31 27.01.2010 04:11
Зачем нужны операторы << и >> fs444 Общие вопросы C/C++ 3 23.12.2009 08:07
Многомерные массивы DDP Помощь студентам 1 19.12.2009 19:37