Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

Динамический массив   Найти похожие ветки 

 
Tonich ©   (2006-01-14 22:28) [0]

Вопрос в следующем ))
необходимо создать двумерную матрица NxN хде N>4000
так вот Setlenght() конечно создает потобную веСЧ но очень уж долго, как это сделать быстрее а?


 
VirEx ©   (2006-01-14 22:32) [1]

http://matrix.kladovka.net.ru/ Система матричных вычислений MatriX


 
PAVIA ©   (2006-01-14 23:07) [2]

procedure TForm1.Button1Click(Sender: TObject);
var a:array of array of byte;
t1,t2:integer;
begin
t1:=GetTickCount;
setlength(a,4000,4000);
t2:=GetTickCount;
caption:="ok "+inttostr(t2-t1);
end;
Работате быстро 32 милисекунды.
Можно через
GetMem(p,4000*4000);
Работает быстро мгновенно.
Но если делать очистку памяти
fillchar(p^,4000*4000,0);
То по скорости будет оналогично
setlength


 
Tonich ©   (2006-01-14 23:12) [3]

ну вообщето меня не интересует матричные вычисления, меня интересует выделение памяти...


 
Tonich ©   (2006-01-14 23:16) [4]


> PAVIA ©   (14.01.06 23:07) [2]

нее byte у меня тоже шустро, я забыл уточнить тип массива extended

вот он долго


 
з. танька   (2006-01-14 23:38) [5]


> Tonich ©   (14.01.06 23:16) [4]

ну GetMem делай, в чем проблема..


 
Tonich ©   (2006-01-14 23:49) [6]

да проблем нет с одномерным массивом.
а овт двумерных, это ж по сути в памяти он одномерный так?
тоесть если я хочу получить элемент a[1][1] то это в массиве созданным с помошью getmem(p,...) это будит p^[2]?  я прально понимаю?


 
з. танька   (2006-01-15 00:28) [7]

неправильно... точнее, структура твоего массива в памяти может быть любой, т.е. ты сам решаешь, по какому смещению какой элемент у тебя будет храниться, и получаешь к ним доступ соответственно.

но обычно у людей элемент [1, 1] находится по адресу Pointer(Dword(@начало) + (1*w + 1)*SizeOf(тип_элемента)), где w - "ширина" твово массива..


 
Tonich ©   (2006-01-15 00:49) [8]


> неправильно... точнее, структура твоего массива в памяти
> может быть любой, т.е. ты сам решаешь, по какому смещению
> какой элемент у тебя будет храниться, и получаешь к ним
> доступ соответственно.

ну это понятно

а вот за это пасибо
> но обычно у людей элемент [1, 1] находится по адресу Pointer(Dword(@начало)
> + (1*w + 1)*SizeOf(тип_элемента)), где w - "ширина" твово
> массива..


 
Loginov Dmitry ©   (2006-01-15 18:02) [9]


> VirEx ©   (14.01.06 22:32) [1]
>
> http://matrix.kladovka.net.ru/ Система матричных вычислений
> MatriX


LOL :))


 
VirEx ©   (2006-01-15 18:23) [10]


>  [9] Loginov Dmitry ©   (15.01.06 18:02)

сам ты лол


 
Loginov Dmitry ©   (2006-01-15 19:14) [11]

Но я же со смайликом :)



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
15-1136957404
begin...end
2006-01-11 08:30
2006.01.29
С Днём рождения! 11 января


15-1136379459
IAmDanil
2006-01-04 15:57
2006.01.29
клава


15-1136196638
PARUS
2006-01-02 13:10
2006.01.29
УДАЛЕНИЕ ПРОГРАММ


1-1134902392
Игорь Степанов
2005-12-18 13:39
2006.01.29
Уделение изображения курсора из клетки StringGrid после ввода в к


15-1136713012
Kerk
2006-01-08 12:36
2006.01.29
Bugger Hukker Crew